【发布时间】:2013-02-16 01:24:00
【问题描述】:
#include <stdio.h>
int main(int argc, char *argv[]) {
char s[]="help";
printf("%d",strlen(s));
}
为什么上面的输出是4,不是说5是正确答案吗?
在内存中应该是'h','e','l','p','\0'..
谢谢。
【问题讨论】:
-
如果你使用
sizeof(s) / sizeof(char),你会得到你期望的答案。 -
@WaleedKhan: True -- 当代码如上所写时。不幸的是,看似微不足道的更改(例如,
char *s="help";)会破坏这一点,因此您需要非常小心。只要我们在它上面,sizeof(char)就被定义为始终为 1,所以只需sizeof(s)就可以满足现在的代码。 -
strlen 的文档在这件事上是否不清楚?