如何解释C中结构的成员访问(点)运算符?

时间:2015-01-16 05:59:32

标签: c pointers struct

我们在结构中有点运算符来访问struct的特定元素。

现在,如果我有一个结构:

struct x { 
    int a; 
    float b;
};

我创建了一个对象struct x obj,然后在编译器中如何解释obj.b以便访问b? 如何计算结构中b的地址位置?

1 个答案:

答案 0 :(得分:3)

struct x的每个实例都具有相同的布局,这是根据您平台的ABI确定的。 C标准对此布局提出了一些要求,例如成员必须按声明顺序排列,但平台在对齐和填充方面具有相当大的灵活性。

数据类型struct x的布局将与obj在内存中的开始位置的知识相结合,以便找到obj.b。如果您有兴趣学习布局,可能需要使用offsetof中的<stddef.h>宏。