任何人都可以帮助我理解这个特殊的联合例子吗?

时间:2014-12-04 09:32:39

标签: c

union {
    unsigned char raw[8];
    struct {
        uint8_t gz_method;
        uint8_t flag;
        uint32_t mtime;
        uint8_t xtra_flags_UNUSED;
        uint8_t os_flags_UNUSED;
    } PACKED formatted;
} header;

我知道union分配的内存是其变量的最大值。但这里是它分配内存为结构所占用的内容吗?

1 个答案:

答案 0 :(得分:3)

整个联合将占用8个字节,因为这是其最大成员的大小。

实际上,在这种情况下,两个成员都具有相同的字节数(8)。因此,有两种方法可以访问数据:直接逐字节或逐字段。