我进行了彻底搜索,但找不到解决方案:假设sizeof(int) = 4
,我们定义:
int a[10] = {0};
Run Code Online (Sandbox Code Playgroud)
以下内容的输出是什么:
1. sizeof(&a)
2. sizeof(*a)
3。sizeof(a)
我知道那sizeof(a)
等于sizeof(int) * 10 = 40
。
我也明白这*a
实际上是数组中的第一个元素,因此sizeof(*a)
实际上是int
驻留在其中的元素的大小,即4
。
但是,运行代码后,我不明白为什么size &a
为8
。我知道'&'
运算符返回变量的地址a
,但是为什么sizeof
地址是8
?
地址的大小取决于您的体系结构,并且与地址int
本身的大小没有直接关系。因此,在您的情况下为8,这似乎很正常(64位)。