类型为struct的一维变量是否在C中变为二维变量
Does 1-dimension variable with type struct become 2-dimension variable in C
我有一个结构类型和一个定义如下的变量:
typedef struct test
{
uint8_t a;
uint8_t b;
uint8_t c;
} test_type;
test_type x[2];
这会让这个变量表现得像一个二维变量吗?
我的意思是当我调用 x[0] 时,它会 return 第一个变量的 地址 上面定义了结构 test_type 吗?
如果它是一个二维数组,结构的内存布局将是相同的,即 a、b、c 将一个接一个地存储在内存中,但是您需要注意编译器不会插入填充它们之间。真正的二维没有这个问题。
编译器通常将结构成员与自然地址边界对齐,因此根据结构中变量的大小,它可能会在结构中的字段之间插入额外的字节。
我有一个结构类型和一个定义如下的变量:
typedef struct test
{
uint8_t a;
uint8_t b;
uint8_t c;
} test_type;
test_type x[2];
这会让这个变量表现得像一个二维变量吗? 我的意思是当我调用 x[0] 时,它会 return 第一个变量的 地址 上面定义了结构 test_type 吗?
如果它是一个二维数组,结构的内存布局将是相同的,即 a、b、c 将一个接一个地存储在内存中,但是您需要注意编译器不会插入填充它们之间。真正的二维没有这个问题。
编译器通常将结构成员与自然地址边界对齐,因此根据结构中变量的大小,它可能会在结构中的字段之间插入额外的字节。