#include<stdio.h> main() {char a[]=“abcdefg”; printf("%d尀n",sizeof(a));}

2025-01-07 09:04:51
推荐回答(3个)
回答1:

// 总结一下
// 假设计算机字长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
}

回答2:

你想问什么啊
结果是8没有错 因为char型数组最后隐藏一个结束标志'\0';
另外你的赋值语句char a[]=“abcdefg”;的标点符号 是汉语的 应该改成英文引号。

回答3:

由于a是数组,因此,sizeof(a)的结果是数组的长度(含'\0'),这里是字符串长度加1,显示结果应该为8,当然如果a是函数形参,则结果只是一个2(或4)。