// 零长数组:用于结构体的末尾,本身不占用空间,因此对sizeof没有影响,但有利于实现可变程度的数组
// 如果有点编译器不支持,为了通用型,可以换成1长数组
结构体
struct m
{
short x,max;
int data[0]
}
以上结构体在VC2010编译器下产生如下报警:
warning C4200:使用了非标准扩展:结构/联合中的零大小数组
改成
struct m
{
short x,max;
int data[1]
}
即可通过编译。
使用方法
struct m *temp=(struct m*)malloc(sizeof(struct m)+100);
int i;
for(i=0;i<100;i++)
{
printf("%d -%d\n",i,temp->data[i]);
}
free(temp);