我的数组创建程序在输入大约8个整数后返回值3221225477

问题描述 投票:0回答:1

程序的第一个任务是在事先不知道元素数量的情况下创建一个数组(用户输入整数直到输入 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]);
    }

The runtime window screenshot

我尝试在第 8 行添加 & 符号,但它只是返回无效转换和左值的错误。

arrays c while-loop
1个回答
0
投票

因为您声明为

n=1
,所以
int array[n];
只有 1 个元素。索引以 0 开头,因此
array[1]
及以上索引超出范围,不得访问。

分配足够的元素,如

int array[100000];
或通过
malloc
reallic
等使用动态分配

请注意,在堆栈上静态分配太大的数组可能会导致运行时错误(取决于环境),因此如果发生这种情况,您应该减小大小或切换到动态分配。

© www.soinside.com 2019 - 2024. All rights reserved.