在结构体中定义长度为0的数组的用法

例如:
struct varlendata
{
    int len;
    char data[0];       
};

sizeof(varlendata)的值是4,就是说data所占的空间为0

因此,如果我们要存储len字节的数据,我们可以这样
char* pbuf = new char[sizeof(varlendata)+len];
varlendata* pdata = (varlendata*)pbuf;
pdata->len = len;
memcpy(pdata->data, data, len);

在网络协议中,使用这种方法特别方便

你可能感兴趣的:(在结构体中定义长度为0的数组的用法)