相同类型的相邻结构成员是否在内存中相邻?

Are adjacent structure members of equal type adjacent in memory?

ISO9899:2011描述的语言(即C11),T为完整数据类型,声明

struct { T a, b; } s;

我可以假设 &s.a + 1 == &s.b 吗? C语言两次改版之间情况有变化吗?

没有。该标准对结构填充没有要求或缺少结构填充,除了第一个成员之前不能有初始填充。

当然,每个结构成员都必须与其类型正确对齐。

不可移植。所有标准保证是结构中成员的偏移量严格增加。工具链可以自由添加它喜欢的任何填充。