BohYoh.comトップページへ
C & C++ FAQ
目次

C C++ 関数へのポインタの宣言方法を教えてください。

 関数へのポインタは、『関数を指すポインタ』です。
 オブジェクトを指すポインタは、int型を指すのであればint*型、double型を指すのであればdouble*型、と指す対象によって型が異なるのと同様に、関数へのポインタも、指す関数の型によって型が異なります。
 たとえば、int型の引数を受け取ってdouble型を返す関数

double func(int x) { … }

を考えましょう。この関数を指すポインタpは、以下のように宣言します。

double (*p)(int);

宣言するポインタ囲む( )を忘れないようにしましょう。
 もし( )を忘れて、

double *p(int); /* 間違い */

と宣言すると、int型の引数を受け取ってdouble型へのポインタを返す、関数pの関数原型宣言となってしまいます。

■ 根拠 ■
標準C §6.5.4.3 Function declarators (including prototypes)
標準C99 §6.7.5.3 Function declarators (including prototypes)
標準C++ §8.3.5 Functions

■ 参照 ■
FAQ qsort関数の使い方を教えてください。

戻る

BohYoh.comロゴ