关于字符串长度的问题: char str[]={'a','b','c','d'}; 用Turbo c得出长度为9; 长度不应该是4么?

如题所述

本来应该是4,不过因为你的字符数组没有结束符号'\0',函数会越界直到第一个0 ascii码为止追问

可以解释下为什么是9么

追答

越界后继续向后,直到第一个0,你的情况是你的程序正好后面6个字节处恰好是一个0,结果没有太多的意义,但是肯定大于4

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-29
这个字符数组中并没有保存字符串结束标志'\0',所以在用以字符串结束标志为准则的统计方法统计长度时(例如用strlen()函数),它并不一定会在统计完这四个字符后即时停止,而是一直统计下去,直到遇见字符串结束标志'\0'字符时为止,由于C语言不检查数组边界,所以用strlen()时,即使已经超出当前数组范围也不会停止,除非遇到'\0'字符。
相似回答