-1
typedef struct
{    
    char tenantName[32];
    unsigned int IDNum;
    float rentAmount;
    unsigned int flatNum;
    unsigned int Num;

}database;

如何动态调整结构数组的大小,而不是像数据库记录[1000]那样静态初始化它;

4

3 回答 3

1

您可以使用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) 都有效。

于 2013-08-18T15:55:29.427 回答
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
于 2013-08-18T14:25:39.597 回答
0
database *record = malloc(1000*sizeof(database));

确保在使用后释放分配的内存。

free(records);
于 2013-08-18T14:50:12.323 回答