C语言struct定义变长数组


C语言中定义变长数组的方法就是在结构体尾部定义一个长度为0的数组,意义是为了快速地索引到结构体尾部,所以当你的结构体指向的内存大小大于结构体大小时,多出来的那部分内存就可以全部当作该数组的空间。

此外,这种长度为0的数组不会占用结构体空间,所以使用‘sizeof'函数获取结构体大小是不会体现该数组的存在的。

typedef struct {
    int32_t id;
    uint8_t data[0];
} test_pack_t;