gpt4 book ai didi

c - 带数组的 C 结构的内存布局

转载 作者:太空狗 更新时间:2023-10-29 14:54:00 24 4
gpt4 key购买 nike

假设我有一个 C 结构定义如下:

typedef struct 
{
double array1[2];
} struct0_T;

内存是怎么布局的? struct 是只保存一个指针还是两个 double 的值?之前我认为该结构包含一个指针,但今天我发现(令我惊讶的是)值存储在那里。不同的编译器之间是否有所不同?

最佳答案

该结构包含两个值。内存布局是 .array1[0],然后是 .array1[1],后面可以选择一些填充量。

填充是其中唯一可以因编译器而异的部分(尽管在实践中,结构的唯一成员是数组,几乎可以肯定没有填充)。

虽然您可能听说过 C 中的数组是指针,但事实并非如此 - 数组是由所有成员对象组成的聚合类型,就像结构一样。只是在几乎所有表达式上下文中,数组的计算结果都是指向其第一个成员的指针。

关于c - 带数组的 C 结构的内存布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29798894/

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