我们在结构中有点运算符来访问struct的特定元素。
现在,如果我有一个结构:
struct x {
int a;
float b;
};
我创建了一个对象struct x obj
,然后在编译器中如何解释obj.b
以便访问b? 如何计算结构中b的地址位置?
答案 0 :(得分:3)
struct x
的每个实例都具有相同的布局,这是根据您平台的ABI确定的。 C标准对此布局提出了一些要求,例如成员必须按声明顺序排列,但平台在对齐和填充方面具有相当大的灵活性。
数据类型struct x
的布局将与obj
在内存中的开始位置的知识相结合,以便找到obj.b
。如果您有兴趣学习布局,可能需要使用offsetof
中的<stddef.h>
宏。