例如:
double a[] = {1,2,3,4};
int length;
length=sizeof(a)/sizeof(a[0]); //數組占內存總空間,除以單個元素占內存空間大小
printf(“length of a=%d”, length ); //輸出length of a=4
2、但是,通過傳遞數組名參數到子函數中,以獲得數組長度是不可行的。
例如:
int getLength(int a[]){
int length;
length=sizeof(a)/sizeof(a[0]); //這樣是錯誤的,得到的結果永遠是1
return length;
}
因為,a是函數參數,到了本函數中,a只是壹個指針(地址,系統在本函數運行時,是不知道a所表示的地址有多大的數據存儲空間,這裏只是告訴函數:壹個數據存儲空間首地址),所以,sizoef(a)的結果是指針變量a占內存的大小,壹般在32位機上是4個字節。a[0]是int類型,sizeof(a[0])也是4個字節,所以,結果永遠是1。
3、因此,獲得數組長度,只能在數組定義所在的代碼區中,采用以上方法,才可以達到效果