相关疑难解决方法(0)

C数组可以在元素之间包含填充吗?

我听说有传言说,在C中,包含在结构中的数组可能在数组的元素之间添加了填充.显然,填充量不能在任何元素对之间变化,或者使用简单的指针算法计算数组中的下一个元素是不可能的.

这个谣言还指出,结构中没有包含的阵列保证不包含填充物.我知道至少那部分是真的.

因此,在代码中,谣言是:

{
    // Given this:
    struct { int values[20]; } foo;
    int values[20];

    // This may be true:
    sizeof(values) != sizeof(foo.values);
}
Run Code Online (Sandbox Code Playgroud)

我非常肯定sizeof(values)会永远相等sizeof(foo.values).但是,我无法在C标准(特别是C99)中找到明确证实或否认这一点的任何内容.

有谁知道这个谣言是否在任何C标准中得到解决?

编辑:我知道在数组foo.values的结尾和结构的结尾之间可能存在填充foo,并且标准声明在开始foo和开始之间不存在填充foo.values.但是,是否有人引用引用标准,其中表示元素之间没有填充foo.values

c arrays padding

25
推荐指数
2
解决办法
8857
查看次数

标签 统计

arrays ×1

c ×1

padding ×1