c - 字符数组的大小和字符指针的大小

标签 c char sizeof

我有一段 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(firstname) 是 6,sizeof(lastname) 是 8。

但是 bobby 是 5 个字符宽,eraserhead 是 11 个字符宽。我希望 16

为什么 sizeof 对字符数组和字符指针的行为不同?

谁能解释一下?

最佳答案

firstname 是一个带有尾随 0 终止符的 char 数组。 lastname 是一个指针。在 64 位系统上,指针为 8 字节宽。

关于c - 字符数组的大小和字符指针的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17260242/

相关文章:

C 传递数组的大小

C 编程语言 "Character Counter"示例无法运行

Meteor 和 C nopoll 应用程序之间的连接丢失

c++ - 为什么 sizeof 在不同的 IDE 上返回不同的值?

C 获取十六进制 shellcode 的大小

c - 从 const char 指针到 char 指针的赋值不给出警告

c - 为什么 64 位 Ubuntu 中的 8 字节数组 (C) 占用 16 字节?

地址可以类型转换吗?

c - DDK 生成 .sln

c - C语言初始化换行符