struct test_a
{
int a;
char b[0];
};
struct test_b
{
int a;
char b[1];
};
好处是为了方便的管理内存缓冲区,如果直接使用指针而不是数组,那么在分配结构体内存缓冲区时需分配两次,一次是分配结构体,一次是分配结构体里的指针,且这个时候指针指向的是另一段内存,与结构体的内存是不连续的。
使用数组的时候可以分配只分配一次结构体的长度再加可变内容的长度,这样分配出来的内存是连续的,可以减少内存的碎片化
struct test_c
{
int count;
char array[0];
}
struct test_d
{
int num;
struct test_c array[0];
}
num、count都表示数组的长度
假设num=3,此时不能通过array[0]、array[1]访问,因为数组对象也是可变长内容的