ここでのC99の違いに少し混乱しています。
int myfunc (int array[n], int n) { ... }
コンパイルされません。私の知る限り、常に配列サイズへの参照を最初に配置する必要があるため、次のように記述する必要があります。
int myfunc (int n, int array[n]) { ... }
ただし、staticキーワードを指定すると、これは完全に正常に機能します。
int myfunc (int array[static 1], int n) { ... }
配列を関数呼び出しで最初に配置することに慣れているので、この順序は私にとってはるかに好ましいですが、なぜこれが可能ですか?
編集:3番目の例が実際にはVLAではないことに気付くと...
参考までに、これは私が見ていたコードの一部であり、次の質問につながりました。
int sum_array(int n, int m, int a[n][m])
{
int i, j, sum = 0;
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
sum += a[i][j];
return sum;
}