如何重新分配结构数组

时间:2017-08-21 04:03:39

标签: c arrays pointers memory struct

使用c,我试图将东西输入到一个结构数组中,一旦填充了该数组,使用realloc将数组的大小加倍并继续运行。

我知道已经有过这样的问题了,但是我希望有人可以清楚地解释清楚,因为我没有按照这些问题的方式创建我的阵列而且有点困惑。< / p>

我有一个结构

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);
}

我知道我需要将realloc转换成正确的东西吗?我只是不确定我的意图是什么或者意味着什么,所以我目前没有任何东西,这当然给了我错误&#34;赋值给表达式与数组类型&#34;

谢谢!

1 个答案:

答案 0 :(得分: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)));