当前位置: 代码迷 >> C语言 >> 一直不解的问题!
  详细解决方案

一直不解的问题!

热度:127   发布时间:2005-03-29 07:21:00.0
一直不解的问题!

main() { char s[]="\n123\\"; printf("%d,%d\n",strlen(s),sizeof(s));

getch(); } 。输出的为何不是5,5,而是5,6,怎么想都不明白!帮帮我,好吗?


----------------解决方案--------------------------------------------------------
这应该是strlen()和sizeof()的关于数组尾是否被计算的问题!!!
----------------解决方案--------------------------------------------------------
隐含一个'\0'在调用函数strlen(s)时不计算在内所以是5了
----------------解决方案--------------------------------------------------------
调用sizeof(s)函数时包括在内所以是6了
----------------解决方案--------------------------------------------------------
请问调用sizeof(s)函数时包括在内所以是6了,是谁包括在内????不明白!
----------------解决方案--------------------------------------------------------
char s[]="\n123\\";
执行这句时,一般的编译器会自动把字符串结束符号‘\0’放入数组中,所以数组占用6个字节。sizeof就是求字节数的操作运算,所以会得到6
strlen是求字符串长度的函数,它这样判断,当遇到‘\0’时,认为字符串结束,并不把'\0'计算入字符串长度,所以得到5,你自己可以写一个strlen函数试试的。
----------------解决方案--------------------------------------------------------
  相关解决方案