c - C中struct类型的一维变量会变成二维变量吗

标签 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 的第一个变量的地址吗?

最佳答案

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

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

关于c - C中struct类型的一维变量会变成二维变量吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51530344/

相关文章:

c - c中的字符串堆栈

c - 在方法中传递字符数组作为参数,C 语言

c++ - 具有结构 vector 的类,其中包含相同的类

c++ - 为什么要添加地址?

MIPS - 如何找到分支和跳转指令的地址值

c - 设置客户区大小(创建后)?

c - 如何在 C 中创建一个数组来容纳 2 种相似类型的结构?

python-3.x - 如何从 Python Dict 创建 Protobuf Struct?

x86 - 什么存储器用于存储复位向量?

c - __COUNTER__ 具有全局作用域