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

标签 c arrays sizeof

因此,如果我运行此代码,它将给出预期的答案 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/

相关文章:

c - 矩阵中总和最大的行

使用数组计算素数

扩展前后的 C++ sizeof 运算符

c - 首先通过套接字发送我要发送的文件的大小

javascript - React Native 数组映射与多维数组

c - 链表中 Next 指针的大小?

c - 为什么 char* 类型转换对于获取变量的大小很重要?

c - 从 .txt 文件读取十六进制值并将其存储到 unsigned char array[ ]

c - 初始化结构的矩阵(双指针)成员

java - JSON到android/java中的多维数组