#include <stdio.h>
#include <stdlib.h>
int constChars(const char* str) {
int size = sizeof(str)/sizeof(char);
printf("Size is %d.\n", size);
int i = 0;
for (i=0;i<size;i++)
printf("%c ", str[i]);
return 0;
}
int main(void) {
char a[10]={'b','c','d','e','f','f','f','f','f','f'};
constChars(a);
return 0;
}
我寫一塊的像上面的代碼,但輸出的結果是: 大小爲8 bcdeffff打印常量字符陣列通過的sizeof()的結果
我很困惑,爲什麼sizeof()函數給出8的大小? 我使用gcc和freebsd。
指針不是數組。您正在計算指針參數的大小,而不是數組對象的大小。 – ouah
我只是改變了一點,大小來自sizeof(str)/ sizeof(char)。所以它談到了一些問題? – Stan666
你正在測量str的大小,而不是[]。 str是一個指針... make a []任意大小,每次你仍然會得到8(在32位系統上是4)。 –