一直不解的问题!
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函数试试的。
----------------解决方案--------------------------------------------------------