如何解释C中结构上的成员访问(点)操作符?

如何解释C中结构上的成员访问(点)操作符?,c,pointers,struct,C,Pointers,Struct,我们在结构中使用点运算符来访问struct的特定元素 现在,如果我有一个结构: struct x { int a; float b; }; 我创建了一个对象struct x obj,那么在编译器中如何准确地解释obj.b,以便访问b如何计算b在结构中的地址位置?结构x的每个实例将具有相同的布局,这是根据平台的ABI确定的。C标准对此布局提出了一些要求,例如,构件必须按声明顺序排列,但平台在对齐和填充方面具有相当大的灵活性 数据类型struct x的布局将与obj在内存中的起

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

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

struct x { 
    int a; 
    float b;
};

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

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


数据类型
struct x
的布局将与
obj
在内存中的起始位置的知识相结合,以便定位
obj.b
。如果您对学习布局感兴趣,您可能想使用

中的
offsetof
宏,只是好奇:您是如何在驼峰格结构中找到
StackOverFlow
这个词的?