您的位置:首页 > 其它

参考,灵活数组成员,可变长结构体或者FAQ里下标为0的数组

2007-12-08 18:13 239 查看
不知道以下是否正确

在不少结构中看到这样的定义:
struct test{
int num;
char ch;
char data[0];
};
不知道这个data[0]的作用是什么?申请连续空间吗?

这是为了扩展结构体的长度
方便扩充长度
是可变长结构体的一种定义形式
其中楼主的这种声明,data是不占内存空间的!

data[0]定义了一个有0个元素的char型数组,可看成是data[](可变长的数组),是结构体中用到的一种叫可变长数组的小技巧。
例:

C/C++ code
struct   test{
int   num;
char   ch;
char   data[0];
};
int main()
{
test *array=(test*)malloc(sizeof(test)+100*sizeof(char));//分配了100个数组内存单元
array->data[0]='a';  //由此可这样结构体操作数组
array->data[99]='b';
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐