main() { char a[]="abcdefg",b[10]="abcdefg"; printf("%d %d尀n",sizeof(a),sizeof(b));}请解释执行结果

2025-04-28 18:55:27
推荐回答(4个)
回答1:

结果为:8 和10
一个字符占一个字节,sizeof就是求所占的字节数的。
a编译会自动在后面添加一个'\0'表示结束符,所以为 7+1=8。
b是一个静态数组,里面的10表示其元素的个数,系统分配的时候按照这个来分配。

回答2:

输出8和10;
a里面有8个字节,b有10个字节。
b指定了10位的char型的数组。
char占1个字节所以b的长度就是10个字节;
a则是动态的指定了abcdefg\0八位字符。所以数组a是8位。占8个字节

回答3:

6 + 1(‘\0’)
10 固定了

回答4:

屏幕输出 7 10换行