【C言語】
関数ポインタの定義と使用方法 – typedefを使った簡単なサンプル

■この記事の概要

この記事では、C言語における関数ポインタの定義方法とその使用方法について説明しています。

typedefを用いて関数ポインタを簡潔に定義し、具体的なコード例を通じて、関数の呼び出し方法を示しています。


■関数ポインタの型定義にtypedefを使う

typedef long(*fptr_t)(int a,short b);

関数ポインタの型 fptr_t を
typedefで定義します。

このコードは次の関数へのポインタ型を定義しています。
戻り値はlong型
第一引数はint型
第二引数はshort型

■関数ポインタを宣言する

 fptr_t  fp = NULL ;

先に定義した関数ポインタの型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関数が呼び出されています。

でもこのサンプルでは関数ポインタの有り難みが
さっぱり分からないのでこちらの使用例も
参照して下さい

参考:

EXP16-C. 関数ポインタを定数値と比較しない