确保结构成员之间没有填充,以便将结构用作数组

Guarantee no padding between structure members to use structure as an array

本文关键字:结构 数组 填充 之间 成员 确保      更新时间:2023-10-16

在下面的例子中调用float z = data.AllCoordinates()[2]总是保存吗?

struct Data {
    // data members
   float x, y, z;
    // data members
   float* AllCoordinates() { return &x; }
} data;

如果没有,如何保证结构构件之间没有间隙?因此,该结构的一部分可以像数组一样使用。

不,不是。

如果你想让结构的行为像数组,为什么不直接声明它包含数组呢?如果您愿意,请添加例如float & x() { return array[0]; }