sizeof(&a[0]) 对于 int 数组 'a' 意味着什么?

what does the sizeof(&a[0]) mean for an array 'a' of int?

所以如果我 运行 这段代码将给出 9

的预期答案
int main()
{
    int a[]={9,8,7,6,5,4,3,2,1};
    int n=sizeof(a)/sizeof(a[0]); printf("%d", n);
}

但如果我将 sizeof(a[0]) 更改为 sizeof(&a[0]).. 则输出为 4 为什么会这样?当给定 sizeof(&a[0]) 时,计算机 'think' 究竟做了什么?

C 中数组 a 上的

&a[0] 产生其第一个元素的地址。在 16 位系统上,该地址的 sizeof 很可能是 2,在 32 位系统上,该地址的 sizeof 很可能是 4,而在 64 位系统上,它是 8 .