■この記事の概要
この記事では、C言語における関数ポインタの定義方法とその使用方法について説明しています。
typedef
を用いて関数ポインタを簡潔に定義し、具体的なコード例を通じて、関数の呼び出し方法を示しています。
■関数ポインタの型定義にtypedefを使う
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関数が呼び出されています。
でもこのサンプルでは関数ポインタの有り難みが
さっぱり分からないのでこちらの使用例も
参照して下さい。
参考: