程序的第一个任务是在事先不知道元素数量的情况下创建一个数组(用户输入整数直到输入 0)。我尝试使用 while 循环来实现此目的,但在输入一定数量的整数后,循环结束,我得到 3221225477 值。
#include<stdio.h>
main(){
int input=1,n=1,i=0;
int array[n];
while(input!=0){
printf("Input a number (zero for end): ");
scanf("%d",&input);
array[i]=input;
if(input!=0){
n++;
i++;
}
}
printf("\nArray: ");
for(i=0;i<n;i++)
printf("%d ",array[i]);
}
我尝试在第 8 行添加 & 符号,但它只是返回无效转换和左值的错误。
因为您声明为
n=1
,所以 int array[n];
只有 1 个元素。索引以 0 开头,因此 array[1]
及以上索引超出范围,不得访问。
分配足够的元素,如
int array[100000];
或通过 malloc
、reallic
等使用动态分配
请注意,在堆栈上静态分配太大的数组可能会导致运行时错误(取决于环境),因此如果发生这种情况,您应该减小大小或切换到动态分配。