零长度数组
0长度数组的使用类似于指针,优点是可以用于变长结构体,不使用时声明指针所需的四个字节空间也可以省去:
typedef struct
{
unsigned int len;
char data[0];
}Package;
void test()
{
int pkg_size = sizeof(Package); // pkg_size = 4
Package *pkg = (Package *)malloc(sizeof(Package)+sizeof(char)*10); // char data[10]
pkg_size = sizeof(pkg); // pkg_size = 8
pkg->data[0] = 'a';
pkg->data[3] = 'd';
}
浙公网安备 33010602011771号