1,柔性数组只能放在结构体末尾,是用来声明一个可变长度的结构体。
eg:struct test
{
struct test *prev;
struct test *next;
char a[0];
};
对于编译器而言,此时数组是不占用内存的,数组名只是一个偏移量,数组名本身代表了一个不可修改的地址常量(数组名永远丢都不可能是指针)对于0长的数组的特点,很容易构造出变成结构体,如缓冲区,数据包等
1,柔性数组只能放在结构体末尾,是用来声明一个可变长度的结构体。
eg:struct test
{
struct test *prev;
struct test *next;
char a[0];
};
对于编译器而言,此时数组是不占用内存的,数组名只是一个偏移量,数组名本身代表了一个不可修改的地址常量(数组名永远丢都不可能是指针)对于0长的数组的特点,很容易构造出变成结构体,如缓冲区,数据包等