字符串中关于“\n”的疑惑
这里数组a的长度是5,可字符串的BaSiC已经达到5个字符的长度了呀,不需要加上\n字符的长度吗?而且还没报错,可以正常打印{:10_261:} 刚好打印成功那是因为你自己写的代码,你当然知道有5个字符了。加入别人说给了你一个字符串,让你拷贝,你怎么做?长度不告诉你,你怎么烤?这就是为什么要在字符串后面加个‘\0’了。就是怕你不知道字符串的长度,所以在后面加个‘\0’。如果求字符串长度的时候发现'\0',那么就潜规则的认为这个字符串中止了。
至于数组a本来就可以保存5个元素。只不过在保存字符串的时候通常最后一位是留给'\0'的。以便计算字符串长度。你不出错是当然的。
至于最后为什么输出正确,那是因为你本来就是一个一个输出的,刚好5个,自然正确。如果使用了printf直接输出字符串。就有可能会在第5个字符后面出现乱码,也就是系统函数不知道你的字符串中止符在哪,在内存里面一直找啊找,突然有一天,发现一个'\0',哦,中止了。然后前面就会找出一大堆不可识别的字符,乱码。要是一不小心找到了不可读写的内存上,程序就game over{:10_245:} musilintan 发表于 2017-2-22 21:02
刚好打印成功那是因为你自己写的代码,你当然知道有5个字符了。加入别人说给了你一个字符串,让你拷贝,你 ...
哇,你好牛逼,分析得好透彻,谢谢very much!!! 什么情况
页:
[1]