■関数ポインタの型定義
typedef long(*fptr_t)(int a,short b);
関数ポインタの型 fptr_t を
typedefで定義します。
このコードは次の関数へのポインタ型を定義しています。
戻り値はlong型
第一引数はint型
第二引数はshort型
■関数ポインタの宣言
先に定義した関数ポインタの型fptr_t を使って関数ポインタ fp を宣言します。
■関数ポインタ使用例
#include <stdio.h>
long max(int a,short b){
return a > b ? a : b ;
}
long min(int a,short b){
return a < b ? a : b ;
}
int main(void){
//関数ポインタの型 fptr_t をtypedefで定義する
typedef long(*fptr_t)(int a,short b);
//関数ポインタ fp の宣言
fptr_t fp = NULL ;
//関数アドレスの設定
fp = max ;
printf("max = %ld\n",fp(123,456));
fp = min ;
printf("min = %ld\n",fp(123,456));
}
関数ポインタ fp に
max関数と,
min関数のアドレスを設定して
それぞれ呼び出しています。
➡実行結果
./a.out
max = 456
min = 123
関数ポインタを使って
max関数とmin関数が呼び出されています。
参考: