是在结构连续中并排声明的变量

Are variables declared side by side in a struct contiguous?

本文关键字:声明 变量 结构 连续      更新时间:2023-10-16

我肯定知道数组元素是连续存储的,但是如果我声明这样的内容是什么:

class A {
    public:
    int a, b, c;
    // or
    int a;
    int b;
    int c;
}

成员是否连续存储?我一直在想,是否有可能从另一个过程中存储一个变量在ab之间的声明之间,以免它不连续。但是我不确定。有保证吗?

a bc保证在结构中处于该顺序。

但是,通常,任何两个结构成员之间都可能存在结构填充。通常,对于仅包含int成员的结构,不会有填充,但最好不要做出假设。

您可以在编译时检查此内容:

static_assert( sizeof(A) == 3 * sizeof(int),  "oops, A had padding" );