#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)。 –