如何解释C中结构上的成员访问(点)操作符?
我们在结构中使用点运算符来访问struct的特定元素 现在,如果我有一个结构:如何解释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 x {
int a;
float b;
};
我创建了一个对象
struct x obj
,那么在编译器中如何准确地解释obj.b
,以便访问b如何计算b在结构中的地址位置?结构x的每个实例将具有相同的布局,这是根据平台的ABI确定的。C标准对此布局提出了一些要求,例如,构件必须按声明顺序排列,但平台在对齐和填充方面具有相当大的灵活性
数据类型
struct x
的布局将与obj
在内存中的起始位置的知识相结合,以便定位obj.b
。如果您对学习布局感兴趣,您可能想使用
中的offsetof
宏,只是好奇:您是如何在驼峰格结构中找到StackOverFlow
这个词的?