1.數(shù)組作為函數(shù)參數(shù)
如上圖所示沸手,數(shù)組作為函數(shù)參數(shù)傳入時(shí)针炉,除了需要數(shù)組名(或者指針)洛搀,還需要傳入數(shù)組元素個(gè)數(shù)(或者指定數(shù)組的結(jié)束符,類似于字符串自帶的\0)译打。
例如:int kk[5]; int *gg = (int *)malloc(5 * sizeof(int))
①SumIt(kk, 5) ②SumIt(gg, 5)
兩種調(diào)用方法都是OK的耗拓,本質(zhì)相同
思考:如何寫(xiě)一個(gè)返回?cái)?shù)據(jù)類型為數(shù)組的函數(shù)?
方法1: 將被調(diào)用函數(shù)內(nèi)的數(shù)組變量聲明為static , 然后將數(shù)組地址返回給調(diào)用函數(shù)
int *getNums(){
static int x[5] = {1奏司, 2乔询, 3, 4韵洋, 5}竿刁;
return x;
}
函數(shù)調(diào)用結(jié)束后黄锤,會(huì)釋放函數(shù)內(nèi)部的自動(dòng)變量,通過(guò)給自動(dòng)變量添加static屬性食拜,延長(zhǎng)變量的生命周期鸵熟,從而能讓調(diào)用函數(shù)使用被調(diào)用函數(shù)內(nèi)部定義的變量
方法2:申請(qǐng)內(nèi)存,返回內(nèi)存地址负甸,但是調(diào)用函數(shù)需要管理返回的內(nèi)存指針(釋放)
int *getNums(){
int *k = (int *)malloc(5 * sizeof(int)); // 申請(qǐng)了內(nèi)存流强,函數(shù)內(nèi)并沒(méi)有釋放
for(int i = 0; i < 5; ++i){
*(k++) == i * i;
}
return k;
}