c语言 sizeof计算

#include
main()
{ char a[10]=”abcd”;
printf(“%d,%d\n”,strlen(a),sizeof(a));
}
这道题,我认为最后输出的应该是4,9啊,为什么是4,10呢?abcd各占2个字节,“\0”占一个字节,那还有一个字节在哪呢

strlen(a); //求字符串的长度,答案显然是4
sizeof(a); //求字符数组a的长度,也就是字符数组a所占用的内存空间的大小的字节数,所以是10。在C语言中,char数据类型占用1个字节的内存单元。追问

哦哦,我明白了,是因为他是a[10],所以占十个字节,如果是a[20],那就占20个字节了吗

追答

是啊。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-03-20
在\0结束符 隐藏的不显示
strlen是求的\0之前的元素长度
sizeof就是申请时多少就是多少 跟有多少元素无关
如果是这样声明的 那么sizeof就是长度加结束符
char a[]=”abcd”;本回答被网友采纳
相似回答