黑马程序员技术交流社区

标题: 为什么 a[]={"name"} 字符串的长度是5呢? [打印本页]

作者: atlas    时间: 2014-11-6 09:12
标题: 为什么 a[]={"name"} 字符串的长度是5呢?
为什么 a[]={"name"} 字符串的长度是5呢?   这明明是四个呀,求大神赐教。
作者: 指尖舞者    时间: 2014-11-6 10:16
本帖最后由 指尖舞者 于 2014-11-6 14:34 编辑

你用的是‘\0’结束的循环进行判断的就是5 因为字符数组最后一位默认有个‘\0’,
你用函数 strlen(a)计算下 结果就是4了

作者: doudou33420    时间: 2014-11-6 12:10
不是字符串长度  是字节数为5  \0也占一个字节.  字符串长度就是4     
作者: atlas    时间: 2014-11-6 13:59
指尖舞者 发表于 2014-11-6 10:16
你用的是‘\0’结束的循环进行判断的就是5 因为字符数组最后一位默认有个‘\0’,你用函数 strlen(a)计算下 ...

这么神奇啊,大神你好棒啊,什么时候我才能像你们一样这么有才呢?
作者: 指尖舞者    时间: 2014-11-6 14:31
这是IOS基础  C语言视频里面的一个小内容……你还是叫我大叔吧 大婶就算了 哈哈
作者: 银河雨    时间: 2014-11-6 15:14
strlen函数是计算字符串的字节数,普通字符都是1个字节,如果是有中文的话,这个函数就有问题了
作者: whbsspu    时间: 2014-11-6 17:09
doudou33420 发表于 2014-11-6 12:10
不是字符串长度  是字节数为5  \0也占一个字节.  字符串长度就是4

正解~~~~
作者: 杰克船长    时间: 2014-11-6 17:26
正解,清晰
作者: yuanlingqi    时间: 2014-11-6 19:11
由于a[]是个不固定长度的数组,所以结尾不一定会是\0,有可能会是其他随机字符,这取决于分配的那块内存后续的内容,所以这个长度不一定是5,可能会大于5。
作者: 枫叶路过123    时间: 2014-11-7 00:30
  字符串后面还有个\0呢,所以加起来就是五个
作者: 冯道明    时间: 2014-11-7 08:54
有一个隐藏字符‘\0’
作者: caozhichao    时间: 2014-11-7 09:05
这个字符串长度应该就是4吧,如果是字节数就是5
作者: ch8898163    时间: 2014-11-7 13:49
C的字符串数组里有一个隐藏的\0
作者: keep_flying    时间: 2014-11-8 06:46
对呢,看里面存放的是什么
作者: 肖郡郁    时间: 2014-11-8 10:43
很简单,这是一个字符串数组,所以在字符后面会跟一个‘\0’作为字符串的结束标记,如果没有这个标记,比如a[]={'n','a','m','e'}这样的成为字符数组,此时他的长度是4.
作者: yuanlingqi    时间: 2014-11-8 10:46
a[]是不定长数组,你之所以是5,是凑巧后面的那个字符是\0,看这么多千篇一律的回答,怎么都不试试呢。
作者: 雪寒    时间: 2014-11-8 11:38
字符串长度应该是4,字节数的话,默认后面有个'\0',所以就是5
作者: 万雷    时间: 2014-11-8 15:39
还有个\0




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2