2

次のスニペットを見てください。

 1  #include <stdio.h>
 2  #include <stdlib.h>
 3  int foo(char [6]);
 4
 5  int main(void) {
 6          char* bar="hello";
 7          return foo(bar);
 8  }
 9
10  int foo(char f[6]) {
11          return EXIT_SUCCESS;
12  }
13

3行目の「char [6]」の正しい専門用語は? 私はそれを「型とサイズの指定子」と呼んでいますが、これは単にコンパイラが何のために使用するかを説明するものです。

3行目全体は、「関数の呼び出しスタック署名」または単に「関数署名」を呼び出すために使用します。「関数の実装」ではなく、「関数の宣言」または「関数のプロトタイプ」も正しいでしょう。

注: コール スタック、フレーム、呼び出し規約などについてすべてを説明する必要はありません。アル。私はそこで正しい用語を探しているだけです。3行目全体ではなく、「char [6]」のような単一の指定子を呼び出す方法のみ。

4

2 に答える 2

4

C 標準 (ISO 9899:1999) では、これはパラメーターの型指定子であり、その指定子に識別子がない場合、パラメーターはunnamedと呼ばれます。

「サイズ」の概念はすべて型の一部です (サイズが不明な配列型はincompleteと呼ばれます)。ここでは、[6]構造が配列型ではなくポインター型を定義していることに注意してください (パラメーター リスト内の最上位の配列宣言子は自動的にポインター宣言子に変換され、推定配列サイズは無視されます)。

于 2010-02-23T12:54:39.907 に答える
1

C の文法では、char [6]3 行目は単一の で構成されるparameter-type-list単一の で構成される です。parameter-listparameter-declaration

それparameter-declarationdeclaration-specifier( char) と ( ) でabstract-declarator構成されてい[6]ます。

于 2010-02-23T12:56:26.270 に答える