我有一个结构类型和一个定义如下的变量:
typedef struct test
{
uint8_t a;
uint8_t b;
uint8_t c;
} test_type;
test_type x[2];
这是否会使该变量表现得像二维变量? 我的意思是,当我调用 x[0] 时,它会返回上面定义的 struct test_type 的第一个变量的地址吗?
最佳答案
如果结构是二维数组,则结构的内存布局将是相同的,即 a、b、c 将依次存储在内存中,但是您需要注意编译器不会在它们之间插入填充。真正的二维不存在这个问题。
编译器通常将结构成员与自然地址边界对齐,因此根据结构中变量的大小,它可能会在结构中的字段之间插入额外的字节。
关于c - C中struct类型的一维变量会变成二维变量吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51530344/