次のタイプのポインタ宣言とC言語の違いは何ですか?C言語のポインタ宣言を理解するための助けが必要
int *p(int a),
int (*p)(int a),
int *(*p)(it(*a)[]),
適切な説明のためにいくつかの例が追加されていれば非常に便利です。
次のタイプのポインタ宣言とC言語の違いは何ですか?C言語のポインタ宣言を理解するための助けが必要
int *p(int a),
int (*p)(int a),
int *(*p)(it(*a)[]),
適切な説明のためにいくつかの例が追加されていれば非常に便利です。
int *p(int a);
私はそれがポインタ宣言であることを強く疑う。書かれた方が良い場合は、関数がint
で、int
へのポインタを返すことがわかります。
int (*p)(int a);
基本的な関数ポインタ。 p
は、int
を取り、int
を返す関数を指しています。例えば:それは無効だから
int foo(int x) { return x+1; }
p = &foo;
最後のものは少し複雑です。括弧の中に数字があったはずです。私はそれが以下のように修正されている(誤字を含む)と仮定します。
int *(*p)(int(*a)[3]);
それは関数ポインタだ、関数は3つのint
の配列へのポインタをとり、int
へのポインタを返します。例えば:
int *extract_first(int (*a)[3]) {
return (*a);
}
p = &extract_first;
'3 'を追加する必要はありますか?私はC言語では正しいとは思わないが、C++でしかない – 4386427
最初はFA関数宣言であり、それは 第ポインタツー関数INTを取り、場合INT を返して、INTを受け取り、ポインタ・ツー・intを返し第三のがされているべきである:
int * (*p) (int(*a)[]);
それへのポインタ関数へのポインタ・アレイの-INTを取り、ポインタ・ツー・INTを返しています。
https://cdecl.org/を試して、 'a'の例を除いて式を入力してください:' int *(* p)(int(*)[]) ' – 4386427
3番目の1つは決してそれを使用しないことです。そうした場合、コードレビュー直後に解雇される可能性があります。 –