【发布时间】:2018-07-10 06:44:41
【问题描述】:
我正在编写一个带有函数 add(a , i, n) 的程序,该函数会将 'i' 作为元素添加到 'a',但如果数组 'a' 空间不足,那么我需要重新分配更多内存到数组。我被困在这里:
#include <stdlib.h>
#include <stdio.h>
int add(int* a, int i, int n);
int main(){
int n = 20;
int *a = (int*) malloc(n*sizeof(int));
int i;
for (i = 0; i < 100000; i++){
n = add(a, i, n);
printf("a[%d]=%d\n",i,(int)a[i]);
}
return 0;
}
int add(int *a, int i, int n){
if (i >= n){
n++;
int* b = (int*) realloc(a, n*sizeof(int));
a[i]=i;
return n;
}else{
}
}
我不是很有经验,所以请温柔...
【问题讨论】:
-
先告诉我们您的问题。
-
你从不使用
realloc的返回值,而且似乎你想改变main::a,这种情况下你必须将a的地址传递给add。 -
This
reallocreference 应该会有所帮助。总结:调用realloc后,a可能不再有效。 -
我意识到我一直在试验,忘记将我的代码恢复到之前的状态。那个 realloc 参考似乎是我正在寻找的,我会搞砸的。谢谢。