使用c,我试图将数据输入到一个结构数组中,一旦该数组被填充,使用realloc将数组的大小加倍并继续。
我知道已经有好几个这样的问题被问到了,但是我希望有人能解释清楚,因为我没有像这些问题那样创建数组,并且变得有点困惑。
我有一个结构

struct Data {
    // Some variables
}

并使用
struct Data entries[100];
int curEntries = 100;
int counter = 1; // index, I use (counter - 1) when accessing

要重新定位,我正在使用
if(counter == curEntries){  // counter = index of array, curEntries = total
    entries = realloc(entries, curEntries * 2);
}

我知道我需要重新定位对吗?我只是不确定该如何或将其强制转换为什么,所以我目前没有任何东西,这当然会给我一个错误“赋值给数组类型的表达式”
谢谢!

最佳答案

struct Data entries[100];// memory is already allocated to this

您需要将entries声明为如下指针:
struct Data *entries=NULL;
entries = malloc(curEntries  * sizeof(struct Data));
//When its time to reallocate
entries = realloc(entries, (curEntries * 2 * sizeof(struct Data)));

关于c - 如何重新分配结构数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45789126/

10-11 23:20