記錄一:
C++ 中可以通過指定 “不帶索引的數(shù)組名” 來傳遞一個指向數(shù)組的指針。
C++ 傳數(shù)組給一個函數(shù)愚墓,數(shù)組類型自動轉(zhuǎn)換為指針類型镀赌,所以傳的實際是地址。
如果想要給函數(shù)傳遞一個一維數(shù)組作為參數(shù)掂碱,有三種方式來聲明函數(shù)形式參數(shù);這三種聲明方式的結(jié)果是一樣的慎冤,每種方式都會告訴編譯器將要接收一個整型指針(此例)疼燥。當然也可以傳遞一個多維數(shù)組作為形式參數(shù)。
1蚁堤、形式參數(shù)是一個指針:
void myFunction(int *param){...}
2醉者、形式參數(shù)是一個已定義大小的數(shù)組:
void myFunction(int param[10]){...}
3、形式參數(shù)是一個未定義大小的數(shù)組:
void myFunction(int param[]){...}
就函數(shù)而言披诗,形參中數(shù)組的長度是無關(guān)緊要的撬即,因為 C++ 不會對形式參數(shù)執(zhí)行邊界檢查。
記錄二:
C++ 是不允許返回一個完整的數(shù)組的呈队。但是剥槐,可以通過指定不帶索引的數(shù)組名來返回一個指向數(shù)組的指針。
即是數(shù)組其實就是指針宪摧,所以可以讓函數(shù)返回指針來實現(xiàn)“返回了數(shù)組”粒竖。
即是聲明一個返回指針的函數(shù):
int * myFunction(){..}
另外,要注意不能返回局部變量的地址几于,除非定義局部變量為?static?變量蕊苗。
如:
int * getRandom( )
{?
?static int r[10];
srand( (unsigned)time( NULL ) );
?for (int i = 0; i < 10; ++i)??
{? ?
?r[i] = rand();
? ?cout << r[i] << endl;
? }
? return r;
}
int main()
{
int *p;
p = getRandom();
//此時,p就指向了r沿彭,可以操作數(shù)組r了(注意r一定是全局的才行)朽砰。
}