Kaw*_*iKx 0 c arrays variable-length
在下面的代码中,如果我在扫描数组“x”的所需长度之前声明可变长度数组“int array1[x]”,则会在执行时收到“分段错误(核心转储)”。(编译没有错误)。我在编译时使用选项 -std=c99 严格使用 ANSI C99 标准。
我的问题是为什么我不能将所有声明合并在一起?
// code to find a minimum value in a variable-length array
#include<stdio.h>
int minval(int [], int); 
int main(void)
{
    int x, i;
    int minivalue;
    printf("Enter the total number of array elements you wish to define?");
    scanf("%i",&x);
    int array1[x];          
    printf("Enter the elements now:");
    for (i = 0; i < x; i++)
        scanf("%i",&array1[i]);
    minivalue = minval(array1, x);
    printf("\nMinimum value in the array is = %i\n",minivalue);
    return 0;
}
int minval(int array2[], int x)     
{
    int i;
    int minivalue;
    minivalue = array2[0];
    for (i=0; i < x; i++){
        if (minivalue > array2[i])
            minivalue = array2[i];  
    }
    return (minivalue);
}
在下面的代码中,如果我在扫描数组“x”的所需长度之前声明可变长度数组“int array1[x]”,则会在执行时收到“分段错误(核心转储)”。
您不能声明具有未初始化值的可变长度数组。
当您移动int array1[x]之前的时, 没有有效值scanf()。x
| 归档时间: | 
 | 
| 查看次数: | 1747 次 | 
| 最近记录: |