使用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;
谢谢!
答案 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)));