3

次の関数宣言の違いを強調してください。

  1. void (*p) (void *a[], int n)

  2. void *(*p[]) (void *a, int n)

4

3 に答える 3

6
  1. void (*p) (void *a[], int n)配列とパラメーターを受け取る関数へのポインターを定義しますvoid*int

  2. void *(*p[]) (void *a, int n)を返す関数へのポインタの配列をvoid*void*int定義し、パラメータとしてaaを取ります。

于 2011-11-09T11:14:59.850 に答える
5

どちらも関数宣言ではないので、説明することは何もありません。

ただし、どちらも関数ポインタの宣言です。あなたが消費すべき優れたチュートリアルウェブサイトがあります。

cdeclまた、便利なプログラム(またはそのオンラインの化身)を提案する必要があります。誰かがあなたのために答えを明らかにする前に、おそらくあなたはそれを自分で試してみたいですか?

(Webサイトに入力する必要がありvoid *(*p[]) (void *, int)ます。つまり、関数の引数の識別子はありません。)

于 2011-11-09T11:14:13.730 に答える
0

編集:気にしないでください、私は宣言を読み間違えました。ごめん。

重要なのは、人々がすでに指摘したような関数ではなく、関数ポインタを宣言しているということです。

于 2011-11-09T11:16:05.200 に答える