零长度数组

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';

}

posted on 2016-10-27 17:07  Offen_Lou  阅读(113)  评论(0)    收藏  举报

导航