类型为struct的1维变量在C中是否变为2维变量

时间:2018-07-26 02:56:43

标签: c struct addressing

我有一个结构类型和一个变量,其定义如下:

typedef struct test
{
    uint8_t            a;        
    uint8_t            b;            
    uint8_t            c;            
} test_type;


test_type x[2];

这是否使该变量的行为类似于二维变量? 我的意思是,当我调用x [0]时,它将返回上面定义了struct test_type的第一个变量的地址吗?

1 个答案:

答案 0 :(得分:1)

如果该结构是二维数组,则该结构的内存布局将相同,即a,b,c将一个接一个地存储在内存中,但是您需要注意编译器不要在它们之间插入填充。真正的二维没有这个问题。

编译器通常将结构成员与自然地址边界对齐,因此取决于变量在结构中的大小,它可能会在结构的字段之间插入额外的字节。