Sizeof&a与* a

Teg*_*ako 6 c sizeof

我进行了彻底搜索,但找不到解决方案:假设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 &a8。我知道'&'运算符返回变量的地址a,但是为什么sizeof地址是8

Mic*_*fel 9

地址的大小取决于您的体系结构,并且与地址int本身的大小没有直接关系。因此,在您的情况下为8,这似乎很正常(64位)。

  • @TheDeveloper并不是在所有系统上都正确,所以最好不要那样学习。指向“ int”的指针是指向“ int”的指针,而指向“ char”的指针是另一回事,它们可以相互转换。 (2认同)