35

関数のパラメータとして 可変長配列を使用する場合

int sum(int n, int a[n]);

n最初のパラメーター ( ) が 2 番目のパラメーター ( ) の長さを指定することを理解するのは簡単aです。しかし、パラメータとして VLAに使用される別のプロトタイプに遭遇しました

int sum(int n, int a[*]);

内部*の代わりに使用される理由を理解するのは本当に難しいですか?n[]

4

2 に答える 2

4

スターを実際の関数に入れると、このエラーが発生しますtest.c:3: error: ‘[*]’ not allowed in other than function prototype scope。いくつかの調査の後、これは実際に*は、変数名の代わりに を使用して、関数プロトタイプで VLA を宣言する方法です。VLA .
ここでの問題は、VLA のスターの代わりに変数を配置すると、変数が宣言されていないことが示されるため、スターはそれを回避するために c99 に組み込まれている方法です。

于 2013-06-28T18:54:52.973 に答える