因此,如果我运行此代码,它将给出预期的答案 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])
时,计算机究竟会“思考”什么?
最佳答案
C 中数组 a
上的
&a[0]
生成其第一个元素的地址。在 16 位系统上,该地址的 sizeof
很可能是 2,在 32 位系统上,该地址的 sizeof
很可能是 4,而在 64 位系统上,该地址的 sizeof
很可能是 2。位制,为8。
关于c - sizeof(&a[0]) 对于 int 数组 'a' 意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53568416/