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 .
所以如果我 运行 这段代码将给出 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' 究竟做了什么?
a
上的 &a[0]
产生其第一个元素的地址。在 16 位系统上,该地址的 sizeof
很可能是 2,在 32 位系统上,该地址的 sizeof
很可能是 4,而在 64 位系统上,它是 8 .