これは、私の友人の 1 人が書いた C プログラムです。私の知る限り、C99 が VLA を導入する前、またはmalloc
実行時に使用する前に、コンパイル時に配列を初期化する必要がありました。
しかし、ここでプログラムはユーザーから a の値を受け取り、const
それに応じて配列を初期化します。を使用しても問題なく動作gcc -std=c89
していますが、私には非常に間違っているように見えます。それはすべてコンパイラに依存していますか?
#include <stdio.h>
int
main()
{
int const n;
scanf("%d", &n);
printf("n is %d\n", n);
int arr[n];
int i;
for(i = 0; i < n; i++)
arr[i] = i;
for(i = 0; i < n; i++)
printf("%d, ", arr[i]);
return 0;
}