typedef struct
{
char tenantName[32];
unsigned int IDNum;
float rentAmount;
unsigned int flatNum;
unsigned int Num;
}database;
如何动态调整结构数组的大小,而不是像数据库记录[1000]那样静态初始化它;
您可以使用calloc(N,SIZE)分配 N 个元素的数组,每个元素的大小为 SIZE。
在您的情况下,它看起来像这样:
数据库 *records = calloc(numdatabases,sizeof(*records));
至于调整数组的大小,您可以使用realloc(PTR,SIZE)它将 PTR 指向的先前分配的空间重新调整为 SIZE 的大小。
在您的情况下,您可以像这样缩小数组:
database *shrinkedrecords = realloc(records,NEWNUMBEROFARRAYS * sizeof(*records))
顺便说一句,在这两个代码中,而不是放置 sizeof(*records) 你可以把 sizeof(database) 都有效。
在 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
database *record = malloc(1000*sizeof(database));
确保在使用后释放分配的内存。
free(records);