用習慣了.net, java的人,用C/C++的數組還是很不習慣的。C/C++中數組和指針是等價的,但是在寫法上稍有
1,形參
例如,以數組為形參,有兩種寫法:
[cpp]
int FindMax1(int* Array);
int FindMax2(int Array[]);
編譯都是可以通過的,語義也都一樣。
但是,在數組的初始化中:
[html]
//非法 int* Array1 = {0,1,2,3};
int Array[] = {0,1,2,3};//通過
一定注意*和[]與int結合的順序不同。
2,形參
另外,以int ArrayName[] 的形式初始化數組,可以提高數組變量初始化的效率。
[cpp]
int Array1[10] = {0};//將整個數組成員元素初始化為0;
char Array2[]={'a','b','c',0}; //當數組定義時沒有指定大小,當初始化采用列表初始化了,那麼數組的大小由初始化時列表元素個數決定,該數組長度為4
int Array3[8]={1,2,3,4};//當數組聲明長度大於列表元素長度,剩余元素初始化為0, 等價於 int v5[8]={1,2,3,4,0,0,0,0};
3,sizeof()
sizeof(int*),數組指針的字節數,32位系統上為4;
int Array1[10] = {0};
sizeof(Array1),數組實際所占內存空間,此處為4*10 = 40;
總結:
int* Array1為指針的意義,而int Array1[]為數組的意義。
在 摘自 bestwolf1983的專欄