【发布时间】:2020-02-16 16:00:33
【问题描述】:
我是指针新手,所以我尝试发明这个简单的问题。为什么它不工作?除了说我犯了什么错误,如果你们能告诉我这种方法的替代方法,我将不胜感激
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int *p;
int i, j;
i = 0;
p = (int *)malloc(sizeof(int) * (i + 1));
scanf("%d", p);
do {
i++;
p = realloc(p, sizeof(int) * i);
scanf("%d", (p + i));
} while (*(p + i) > 0);
for (j = 0; j < i; j++) {
printf("%d\n", *(p + j));
}
free(p);
return 0;
}
【问题讨论】:
-
p=realloc(p,sizeof(int)*i);将分配一个“i”整数的缓冲区。下面的 scanf 将在 p+I 处存储一个值,该值不在分配的缓冲区的末尾。
标签: c loops pointers memory-management