使用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/