sizeof()的疑惑? char s[] = "abc"; sizeof(s) :4 char s1[3] ="abc"; sizeof(s1):3

问什么一个算\0,一个没有算呢?... 问什么一个算\0,一个没有算呢? 展开
 我来答
453743739
2012-08-04 · TA获得超过343个赞
知道小有建树答主
回答量:515
采纳率:0%
帮助的人:308万
展开全部
char s[] = "abc",这是定义时即为"abc\0"四个字符。
而char s1[3] ="abc",其中"abc"也实际上是"abc\0",但是s1[3] 只有三个,所以最后的'\0'被舍去了

比方说 char s[] = "abcdef"; sizeof(s) :7
char s1[3] ="abcdef"; sizeof(s1):3
yehuaw
2012-08-04 · TA获得超过355个赞
知道小有建树答主
回答量:615
采纳率:0%
帮助的人:201万
展开全部
sizeof是看目标所占内存的大小的。
char s[]的内存大小是看后面的字符串的,字符串是要及时'\0'的。
char s1[3],这个已经分配了3字节的内存,所以就是3。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
czy7812
2012-08-04 · TA获得超过2666个赞
知道小有建树答主
回答量:518
采纳率:88%
帮助的人:181万
展开全部
前一个字符数组[]中间没有数据,看你给他几个字符,它会以\0结束,所以长度是4;而后面一个你[]中直接就写了3了,你后面有字符也被截取忽略了,当然长度只有3了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式