【C】结构体的使用
一、结构体对齐 1. 默认对齐规则 1.1. 规则 数据类型自身的对齐值 int8_t / uint8_t 型:1 字节。 int16_t / uint16_t 型:2 字节。 int32_t / uint32_t / float 型:4 字节。 double 型:8 字节。 结构体的自身对齐值 其成员中自身对齐值最大的那个值。 数据成员、结构体的有效对齐值 自身对齐值和指定对齐值中较小者,即 有效对齐值 = min(自身对齐值,当前指定的对齐值)。 1.2. 示例 假如结构体的声明如下: 1 2 3 4 5 6 typedef struct { uint8_t a; uint16_t b; uint16_t c; uint32_t d; } struct_demo_t; 假设当前默认是 4 字节对齐,该结构体的大小是 12 Bytes,内存的使用空间如下: 1 2 3 4 5 6 7 +---+---+---+---+ | a | | b | +---+---+---+---+ | c | | +---+---+---+---+ | d | +---+---+---+---+ 代码测试(main.c): ...