我有一段 C 代码,但我不理解 sizeof(...)
函数的工作原理:
#include <stdio.h>
int main(){
const char firstname[] = "bobby";
const char* lastname = "eraserhead";
printf("%lu\n", sizeof(firstname) + sizeof(lastname));
return 0;
}
在上面的代码中,firstname 的大小为 6,lastname 的大小为 8。但是 "bobby" 是5个字符宽,"eraserhead" 是11个字符宽。我期望结果是16。
为什么对于字符数组和指向字符的指针 sizeof 表现不同?
有人能澄清一下吗?
sizeof
和strlen()
函数的结果类型都是size_t
。在打印size_t
值时应该使用%zu
而不是%lu
。如果你的编译器不支持%zu
,则可以将size_t
转换为已知类型,并使用该类型的适当格式进行打印。 - Keith Thompson