gpt4 book ai didi

c - 为什么整型数组size(array)的返回值恰好是元素个数的4倍?

转载 作者:太空宇宙 更新时间:2023-11-04 07:46:42 25 4
gpt4 key购买 nike

例如,如果我执行以下操作,

int array[5] = {1, 2, 3, 4, 5};
printf("%d", sizeof(array));

它将返回元素数量的 4 倍,即 5 = 20。

但我的问题是数组不需要指针吗?(地址)如果是这样,既然指针有 8 个字节的大小,为什么它不包含在大小中?

最佳答案

But my question is don't arrays require pointers?(address)

没有。数组只是一个对象序列 - 在本例中,是一个包含 5 个 int 的序列:

       +–––+
array: | 1 | array[0]
+–––+
| 2 | array[1]
+–––+
| 3 | array[2]
+–––+
| 4 | array[3]
+–––+
| 5 | array[4]
+–––+

没有为任何指针预留空间 - expression array 将被转换(“衰减”)为指针表达式,这样它的计算结果为第一个元素(除非它是 sizeof 或一元 & 运算符的操作数)。

If so, since pointers have the size of 8 bytes, why isn't it included in the size?

不要假设指针有特定的大小——仍然有 16 位和 32 位系统在使用,指向不同类型的指针不必具有相同的大小和表示。整个世界都不是 VAX x86-64。

关于c - 为什么整型数组size(array)的返回值恰好是元素个数的4倍?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56436778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com