次の関数宣言の違いを強調してください。
void (*p) (void *a[], int n)
void *(*p[]) (void *a, int n)
次の関数宣言の違いを強調してください。
void (*p) (void *a[], int n)
void *(*p[]) (void *a, int n)
void (*p) (void *a[], int n)
配列とパラメーターを受け取る関数へのポインターを定義しますvoid*
int
void *(*p[]) (void *a, int n)
を返す関数へのポインタの配列をvoid*
void*
int
定義し、パラメータとしてaとaを取ります。
どちらも関数宣言ではないので、説明することは何もありません。
ただし、どちらも関数ポインタの宣言です。あなたが消費すべき優れたチュートリアルウェブサイトがあります。
cdecl
また、便利なプログラム(またはそのオンラインの化身)を提案する必要があります。誰かがあなたのために答えを明らかにする前に、おそらくあなたはそれを自分で試してみたいですか?
(Webサイトに入力する必要がありvoid *(*p[]) (void *, int)
ます。つまり、関数の引数の識別子はありません。)
編集:気にしないでください、私は宣言を読み間違えました。ごめん。
重要なのは、人々がすでに指摘したような関数ではなく、関数ポインタを宣言しているということです。