黑马程序员技术交流社区

标题: ios小白在学习c,问一个关于数组的问题! [打印本页]

作者: 斑斑1111    时间: 2016-2-26 15:22
标题: ios小白在学习c,问一个关于数组的问题!
想要输出用strlen()表示的字符串的字节数,如果我没理解错的话,strlen()应该是遇到"\0"之后就结束了,
并且不把"\0"算入字节数,可是为什么<char str[ ]="ab\013\r\082\\\"";>这段字符输出的字节数是4呢?
求大神解答...多谢了!



作者: 米阳    时间: 2016-2-28 18:42
看了一下 , 发现我也不懂 ,  同问 , 哪位大神帮忙解答下 , 多谢了
作者: 从心开始のBean    时间: 2016-2-28 21:18
本帖最后由 从心开始のBean 于 2016-2-28 21:19 编辑

以上语句等效于char str[] = {'a','b','\','0',.....};
而非 char str[] = {'a','b','\0',....};
我是这么理解的, <char str[ ]="ab\013\r\082\\\"";>语句中, "\0"分别表示'\'和'0', 跟'\0'不是一回事, 因为\0代表空位, 在"xxxx"类似双引号字符串中并不显示.
同小白, 欢迎大神指正

作者: 我是王觉瘦    时间: 2016-2-29 20:49
你如果把这个字符串打印一下,你会发现显示结果是有问题的。原因是\013(垂直制表符)、\r(回车)是转义字符。\013是八进制的ASCII码。而\082是非法的字符,所以到这里就算是字符串结束了。我也是现学现用,不对请指教
作者: 海洋深处的8爪鱼    时间: 2016-2-29 21:29
同为小白不懂!!!!




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