不定长的结构体定义

来源:百度知道 编辑:UC知道 时间:2024/05/16 13:38:24
基于C/C++要求能在一个数据库文件中存放多张不同的表,并能查看各表的字段结构内容,最后自选的软件平台上建立能创建,查看表构造模式的用户界面。现在只要求定义表构造模式。。。

结构体可以这样:

typedef struct Item
{
DATA data; // 你想要存储的一些属性等
int iSize; // 后续数据的大小
char acData[1]; // 从这里开始记录你的数据
} Item;

每次为一个新的 Item 申请空间时,申请大小为:
sizeof(Item) + iDataSize
这里的 iDataSize 就是你想存储的活用空间大小。
调用的时候,直接写结构体的 acData[n] 就可以了,可能会浪费几个字节的空间,但这些应该可以忽略。
原理是将 acData[0] 当作数据开始的部分,而 acData[n] 虽然越界了,但在你申请的空间范围内,所以不会有问题。

另外一种方法是在结构体里声明一个指针,用指针来记录数据的位置。