对于以下代码:
char a[] = "Apple";
char *s[] = {"Apple"};
printf("%d %d\n", sizeof(a), sizeof(s[0]));
输出为:
6 4
有人能告诉我为什么
sizeof()
会给出不同的输出吗?编辑:我本来想输入
sizeof()
,但改为输入strlen()
。我也为此道歉。我现在已经编辑了声明。 最佳答案
sizeof(a)
是数组的大小,它包含终止符和5个可打印字符。strlen(s[0])
给出字符串的长度,不包括终止符,因为这是指定要执行的操作。
更新:strlen
是指针的大小。如果只给一个指向它的指针,就无法确定数组的大小。
关于c++ - sizeof()运算符的行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24805519/