c - &a 与 *a 的大小

标签 c sizeof

我彻底搜索但找不到解决方案: 假设 sizeof(int) = 4,我们定义:

int a[10] = {0};

下面的输出是什么:
1. sizeof(&a)
2. sizeof(*a)
3. 大小(a)

我知道 sizeof(a) 等于 sizeof(int) * 10 = 40
我也明白 *a 实际上是数组中的第一个元素,因此 sizeof(*a) 实际上是 int 的大小驻留在其中,即 4

但是运行代码后,我不明白为什么&a的大小是8。 我知道 '&' 运算符返回变量 a 的地址,但为什么 sizeof 地址是 8?

最佳答案

地址的大小取决于您的体系结构,与 int 本身的大小没有直接关系。所以在你的例子中是 8,这看起来很正常(64 位)。

关于c - &a 与 *a 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57407161/

相关文章:

在 c 中创建具有 %d id 的文本文件

c - gdb "Program exited normally"当它不应该

c++ - 虚拟继承中派生类的大小

c - C 中函数类型的大小

c++ - 不同编译器中的指针大小

在 C 中使用 typeof 创建一个特定的宏

c - 在C中,是否保证数组起始地址小于其他元素的地址?

c - Linux 管道 : Bad file descriptor in functions read and write

c - 数组长度...使用 sizeof 运算符时的不同输出

c - 为什么第二个元素被打印为1?