typedef struct
{
char tenantName[32];
unsigned int IDNum;
float rentAmount;
unsigned int flatNum;
unsigned int Num;
}database;
如何动态调整结构数组的大小,而不是像数据库记录那样静态地初始化[1000];
答案 0 :(得分:1)
您可以使用calloc(N,SIZE)分配N个元素的数组,每个元素的大小为SIZE。
在你的情况下,它看起来像这样:
数据库* records = calloc(numdatabases,sizeof(* records));
至于重新调整数组的大小,您可以使用realloc(PTR,SIZE),这将重新调整PTR指向的先前分配的空间大小为SIZE。
在你的情况下你可以像这样缩小数组:
database *shrinkedrecords = realloc(records,NEWNUMBEROFARRAYS * sizeof(*records))
顺便说一下,在两个代码中,而不是放入sizeof(*记录),你可以把sizeof(数据库)都有效。
答案 1 :(得分:0)
在C中,你将使用malloc(获取内存),realloc(获取更多内存)和free(释放内存)。
dataType *ptr = malloc(sizeof(dataType)); //one record memory allocated
ptr = realloc(ptr, newSize); //increases the size of the memory allocated
free(ptr); //releases all the memory
答案 2 :(得分:0)
database *record = malloc(1000*sizeof(database));
确保在使用后释放分配的内存。
free(records);