// 总结一下
// 假设计算机字长32位,所有指针sizeof都是4
char a[10]; // sizeof(a) == 10,数组就是数组所占空间
char b[] = "abcdefg"; // sizeof(b) == 8,也是数组,大小由后面的字符串决定,别忘了末尾的0
char *p = a; // sizeof(p) == 4,就是指针
char *q = malloc(10); // sizeof(q) == 8,也是指针,跟后面的malloc没关系
void f(char a[10]) {
sizeof(a) // 作为函数的参数,数组会退化为指针,所以是4
}
你想问什么啊
结果是8没有错 因为char型数组最后隐藏一个结束标志'\0';
另外你的赋值语句char a[]=“abcdefg”;的标点符号 是汉语的 应该改成英文引号。
由于a是数组,因此,sizeof(a)的结果是数组的长度(含'\0'),这里是字符串长度加1,显示结果应该为8,当然如果a是函数形参,则结果只是一个2(或4)。