【发布时间】:2015-10-04 03:42:08
【问题描述】:
我一直在试图围绕一个我确信是可能的想法,我只是不确定我是否以正确的方式进行。我的目的是创建一个数组,然后用用户想要的任意数量的值填充它。但是,我的目标是不使用任何定义的值本身。我希望能够继续无限地增加它可以包含的值的数量。
这是我一直用来尝试解决这个问题的测试代码:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i;
int Up;
int Ary[0];
printf("Please enter the number of integers you want to input: ");
scanf("%d", &Up);
for(i = 0; i < Up; i++)
{
printf("Please enter a number: ");
Ary[i] = (int) malloc(sizeof(int));
scanf("%d", &Ary[i]);
}
for(i = 0; i < Up; i++)
{
printf("%d ", Ary[i]);
if(i % 10 == 0)
{
printf("\n");
}
}
return 0;
}
这可能是试图弄清楚这一点的糟糕方法,我也可能这样做是一种完全错误的方法;但是我有时会遇到分段错误。如果我使用较小的值,例如只输入 4 或 5 个值,它可以正常工作,但是如果我输入 10 个值,它会给我一个分段错误。如果我输入 50 个值,它可以让我输入所有 50 个值,但在打印出第 41 个值后给我一个分段错误。
代码本身只是达到目的的一种手段。最终我想知道的是如何设置一个可以无限期添加值的数组,同时使用动态内存分配保留以前的值?
PS。我希望这足以很好地定义我的问题,但是如果没有,我想完善我的问题,以便更清楚。如果不清楚以及原因,请发表评论。
【问题讨论】:
标签: c arrays malloc dynamic-memory-allocation