我知道字符串的结尾由空字符表示,但我无法理解以下代码的输出。
#include <stdio.h>
#include <string.h>
int
main(void)
{
char s[] = "Hello\0Hi";
printf("%d %d", strlen(s), sizeof(s));
}
OUTPUT: 5 9
If strlen()
检测到字符串在 o 末尾处结束,那么为什么不检测到sizeof()
做同样的事情?即使它不做同样的事情,不是 '\0' A 空字符(即只有一个字符),所以答案不应该是 8 吗?
The sizeof
运算符不会给出字符串的长度,而是给出其操作数类型的大小。由于在您的代码中操作数是一个数组,sizeof
为您提供数组的大小,包括两者null
人物。
如果是这样的话
const char *string = "This is a large text\0This is another string";
printf("%zu %zu\n", strlen(string), sizeof(string));
结果会非常不同,因为string
是一个指针而不是一个数组。
注意:使用"%zu"
说明符size_t
这是什么strlen()
返回,并且是由以下给出的值的类型sizeof
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)