sca*_*cai 5 c memory arrays struct
假设我有一个C结构定义如下:
typedef struct
{
double array1[2];
} struct0_T;
Run Code Online (Sandbox Code Playgroud)
记忆是如何布局的?struct只能保持一个指针或两个双精度值吗?在我认为结构体有一个指针之前,但今天我发现(令我惊讶的是)值存储在那里.它在不同的编译器之间有所不同吗?
结构包含两个值.该存储器布局被.array1[0],随后.array1[1],任选地随后填充的一些量.
填充是唯一可以在编译器之间变化的部分(尽管在实践中,结构的唯一成员是数组,几乎肯定没有填充).
虽然你可能听说C中的数组是一个指针,但事实并非如此 - 数组是一个由所有成员对象组成的聚合类型,就像结构一样.几乎在所有表达式上下文中,数组都会计算出指向其第一个成员的指针.