main()
{
char a[]="abcdefg",b[10]="abcdefg";
printf("%d %d\n",sizeof(a),sizeof(b));
}
执行后输出结果是(C)
A)7 7
B)8 8
C)8 10
D)10 10
因为:
数组a,没有给数组大小,那么,系统用初始化数据,自动给给它分配大小,由于它的初始化数据有7个字节,再加上一个字符串的结束符号\0,就是8个字节了。所以,sizeof(a)=8
数组b,已经指定了大小,那就是10,所以,sizeof(b)=10
D
数组a虽然没有指定大小,但是它会根据数组中元素个数而自行分配大小,元素个数虽然为7,但是系统还会自动增加一个字符串结束标志\0,如此算来a的大小就是8了
数组b因为有显式的指定大小,所以不管你给字符串赋了多少值,它的大小是固定的,就是10