我有一块C代码和我不理解sizeof(...)
功能如何工作的:大小字符数组和字符指针的大小的
#include <stdio.h>
int main(){
const char firstname[] = "bobby";
const char* lastname = "eraserhead";
printf("%lu\n", sizeof(firstname) + sizeof(lastname));
return 0;
}
在上述代码中的sizeof(姓名)的6和sizeof (姓氏)是8.
但是bobby
是5个字符宽,而eraserhead
是11个宽。我期待16
。
为什么sizeof对字符数组和字符指针的行为不同?
任何人都可以澄清吗?
'sizeof'和'strlen()'都给出'size_t'类型的结果。使用'%zu',而不是'%lu'来打印'size_t'值。或者,如果您的编译器不支持'%zu',则转换为已知类型并使用适当的格式。 –