【C語言】獲得數組長度


c語言中,定義數組后可以用sizeof命令獲取數組的長度(可容納元素個數);

如:

{

int data[5];

int length;

length=sizeof(data)/sizeof(data[0]);//數組占內存總空間,除以單個元素占內存空間大小

printf("length of data[5]=%d",length);輸出length of data[5]=5

}

 

但是通過傳遞數組名參數到子函數中,以獲取數組長度是不可行的,如

int getLength(int[] a){

int length;

length=sizeof(a)/sizeof(a[0]);//這樣得到的結果永遠是1

return length;

}

 

因為,a是函數參數,到了本函數中,a是一個指針(地址,系統在本函數運行時,是不知道a鎖表示的地址有多大的數據存儲空間,這里只是告訴函數:一個數據存儲空間首地址),所以sizeof(a)的結果是指針變量a占內存的大小,一般在32位機上是4個字節,a[0]是int類型,sizeof(a[0])也是4個字節,所以結果永遠是1。

因此,獲得數組長度,只能在數組定義所在的代碼區中,采用以上方法,才可以達到效果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM