【发布时间】:2019-03-31 21:02:23
【问题描述】:
我尝试创建使用 realloc 进行的动态增长数组。我有下面的例子,但我不明白这段代码是如何使用 malloc 工作的。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int cnt = 0;
double *numbers = NULL;
double newnum;
while (scanf("%lf", &newnum) == 1 && newnum != -1) {
double *newarr = (double*) malloc(sizeof(double) * (cnt+1));
for (int i = 0; i < cnt; ++i)
newarr[i] = numbers[i];
free(numbers);
numbers = newarr;
numbers[cnt] = newarr;
++cnt;
}
for (int i = cnt-1; i >= 0; --i) {
printf("%f\n", numbers[i]);
}
free(numbers);
return 0;
}
【问题讨论】:
-
很确定
numbers[cnt] = newarr;应该是numbers[cnt] = newnum;
标签: c