次のコードでは、配列 '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);
}