関数のパラメータとして 可変長配列を使用する場合
int sum(int n, int a[n]);
n
最初のパラメーター ( ) が 2 番目のパラメーター ( ) の長さを指定することを理解するのは簡単a
です。しかし、パラメータとして VLAに使用される別のプロトタイプに遭遇しました
int sum(int n, int a[*]);
内部*
の代わりに使用される理由を理解するのは本当に難しいですか?n
[]
関数のパラメータとして 可変長配列を使用する場合
int sum(int n, int a[n]);
n
最初のパラメーター ( ) が 2 番目のパラメーター ( ) の長さを指定することを理解するのは簡単a
です。しかし、パラメータとして VLAに使用される別のプロトタイプに遭遇しました
int sum(int n, int a[*]);
内部*
の代わりに使用される理由を理解するのは本当に難しいですか?n
[]
スターを実際の関数に入れると、このエラーが発生しますtest.c:3: error: ‘[*]’ not allowed in other than function prototype scope
。いくつかの調査の後、これは実際に*
は、変数名の代わりに を使用して、関数プロトタイプで VLA を宣言する方法です。VLA .
ここでの問題は、VLA のスターの代わりに変数を配置すると、変数が宣言されていないことが示されるため、スターはそれを回避するために c99 に組み込まれている方法です。