如果一階陣列比如 int array[10]
可以用strlen(array)找出陣列的長度
那多階陣列比如 array[5][5] 要怎麼得到他的大小?
請舉例說明
謝謝
2007-02-05 18:00:55 · 2 個解答 · 發問者 ? 4 in 電腦與網際網路 ➔ 程式設計
用 sizeof (array)就可以了。
sizeof( ) 是 compiler time 的 function, 它會幫你算出大小,單位是 byte
2007-02-06 05:23:10 補充:
舉例:
main( )
{ double array[5][5];
printf("%d\\n", sizeof(array));
}
會印出 5 * 5 * 8 = 200(註:8 是 double 的大小)
main( )
{ float array[5][5];
printf("%d\\n", sizeof(array));
}
會印出 5 * 5 * 4 = 100(註:4 是 float 的大小)
2007-02-06 05:23:14 補充:
main( )
{ int array[5][5];
printf("%d\\n", sizeof(array));
}
在 16 位元的電腦會印出 5 * 5 * 2 = 50(註:2 是 16 位元 int 的大小)
在 32 位元的電腦會印出 5 * 5 * 4 = 100(註:4 是 32 位元 int 的大小)
在 32 位元的電腦會印出 5 * 5 * 8 = 200(註:8 是 64 位元 int 的大小)
2007-02-06 05:26:14 補充:
5 * 5 * _ = 是我寫給你看的,電腦只會印出後面那 50 / 100 / 200 的答案
2007-02-11 15:39:03 補充:
在 C,sizeof( ) 是在 compiler time 算的。
而 陣列大小必須是常數,變數的話要用 malloc( )。
所以,
int array[5][5];
sizeof( array[5][5] ) // 1
sizeof( array[5][5] / sizeof(int) ) // 2
sizeof( array[5][5] / sizeof(array[0]) ) //3
sizeof( array[5][5] / sizeof(array[0][0]) ) //4
雖然都會出答案,但
2007-02-11 15:43:51 補充:
1 得到 5*5 * sizeof(int) 應該是多數程式要算的東東。
2 得到 5*5 通常沒什麼意義:程式師一定知道那大小是 5 * 5,不用 sizeof( )
(不過我還是用過,想不起來啥時用過了。)
3 應該是 4 之誤!array[0] 是個 pointer!! 5 * 5 / sizeof(pointer) 是什麼?
4 同 2,只是萬一 array 換型別時,不用重寫,比較好!
註:上一篇 sizeof 裡的 [5][5] 都要去掉才對!
2007-02-05 18:32:20 · answer #1 · answered by ? 7 · 0⤊ 0⤋
int的array不適用strlen
一般的用法應該是像樓上說的,使用sizeof()
例子:
int array[10];
printf("size = %d\\n", sizeof(array) / sizeof(int));
int array[5][5];
printf("size = %d\\n", sizeof(array) / sizeof(int));
/ sizeof(int) 那邊要根據你宣告的型別來改
不然就寫成 sizeof(array) / sizeof(array[0]);
2007-02-06 07:55:16 · answer #2 · answered by 智強 3 · 0⤊ 0⤋