10-15. ポインタ関数ポインタ
◇ポインタ関数ポインタ
またわけのわからないタイトルを作ってしまいました。
ポインタ関数のポインタです。
つまり今度はポインタ関数をポイントしようということです。
宣言文は次のようになります。
型 (*識別名)(引数の型);
さっきと同じですね。
実際に int *p_func(void) を *P_func でポイントする時は
int *(*P_func)(void);
~~~~~
と宣言文を書けばOKです。ちなみに波線の部分が型に相当します。
最後に前回のプログラムに関数ポインタを付け加えてみましょう。
#include <stdio.h> char *string_func(int n); int main() { int i; char *(*P_func)(int); /* ここを追加 */ P_func = string_func; /* 代入も同じですね */ for ( i=1;i< =3;i++){ printf("String No.%d %s\n",i,(*P_func)(i)); } return 0; } char *string_func(int n) { static char *string[] = { "", "C-Production", "Official HomePage", "Spring Version" }; return string[n]; }