为什么这个程序的第一个printf语句输出的字节长度不是5而是11呢

[复制链接]
查看11 | 回复3 | 2012-2-29 18:59:14 | 显示全部楼层 |阅读模式
你的char a[5]只定义了5字符。字串最后一位必须留一位表示字符结束标志\0.所以你全给它值了,所以strlen在计算该长度时出错了。如果char a[6];加一位就对了。...
回复

使用道具 举报

千问 | 2012-2-29 18:59:14 | 显示全部楼层
同样是C语言但是在不同的编译器下 数据类型所占的字节是不一样的。JAVA语言 的数据类型所占的字节是一定的。我们来说说你的实例:很明显你用的编译器 默认一个char类型所占的字节为2
共有5个字符2*5=10 +字符结束标志\0(占一个字节)=11. strlen(a)表示的是你的a[]在内存中所占的真实字节数。 而si...
回复

使用道具 举报

千问 | 2012-2-29 18:59:14 | 显示全部楼层
strlen是返回字符串首地址到/0的长度,你设置的数组不够,没有写/0的地方。返回的是一个不确定数值。char a[6]={'a','b','c','d','e'};这样就会输出5了。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行