我彻底搜索但找不到解决方案:
假设 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/