A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© atlas 中级黑马   /  2014-11-6 09:12  /  2080 人查看  /  19 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么 a[]={"name"} 字符串的长度是5呢?   这明明是四个呀,求大神赐教。

19 个回复

倒序浏览
本帖最后由 指尖舞者 于 2014-11-6 14:34 编辑

你用的是‘\0’结束的循环进行判断的就是5 因为字符数组最后一位默认有个‘\0’,
你用函数 strlen(a)计算下 结果就是4了
回复 使用道具 举报
不是字符串长度  是字节数为5  \0也占一个字节.  字符串长度就是4     
回复 使用道具 举报
计算机在保存字符串的时候会在字符串结尾处加上一个“\0”作为字符串结束的标志。所以字节数就是5.。。
回复 使用道具 举报
指尖舞者 发表于 2014-11-6 10:16
你用的是‘\0’结束的循环进行判断的就是5 因为字符数组最后一位默认有个‘\0’,你用函数 strlen(a)计算下 ...

这么神奇啊,大神你好棒啊,什么时候我才能像你们一样这么有才呢?
回复 使用道具 举报
这是IOS基础  C语言视频里面的一个小内容……你还是叫我大叔吧 大婶就算了 哈哈
回复 使用道具 举报
strlen函数是计算字符串的字节数,普通字符都是1个字节,如果是有中文的话,这个函数就有问题了
回复 使用道具 举报
doudou33420 发表于 2014-11-6 12:10
不是字符串长度  是字节数为5  \0也占一个字节.  字符串长度就是4

正解~~~~
回复 使用道具 举报
正解,清晰
回复 使用道具 举报
由于a[]是个不固定长度的数组,所以结尾不一定会是\0,有可能会是其他随机字符,这取决于分配的那块内存后续的内容,所以这个长度不一定是5,可能会大于5。
回复 使用道具 举报
  字符串后面还有个\0呢,所以加起来就是五个
回复 使用道具 举报
有一个隐藏字符‘\0’
回复 使用道具 举报
这个字符串长度应该就是4吧,如果是字节数就是5
回复 使用道具 举报
n、a、m、e 还有一个是‘\0’,;当以这种方式为数组赋值的时候,会在数组的最后添加一个‘\0’。做字符串的结束标志,所以长度是5
回复 使用道具 举报
C的字符串数组里有一个隐藏的\0
回复 使用道具 举报
对呢,看里面存放的是什么
回复 使用道具 举报
很简单,这是一个字符串数组,所以在字符后面会跟一个‘\0’作为字符串的结束标记,如果没有这个标记,比如a[]={'n','a','m','e'}这样的成为字符数组,此时他的长度是4.
回复 使用道具 举报
a[]是不定长数组,你之所以是5,是凑巧后面的那个字符是\0,看这么多千篇一律的回答,怎么都不试试呢。
回复 使用道具 举报
字符串长度应该是4,字节数的话,默认后面有个'\0',所以就是5
回复 使用道具 举报
还有个\0
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马