関数ポインタ

変数のためのポインタですら抵抗はあると思いますので,ましてや関数のポインタなど,と思う
かも知れません.
しかしながら,関数の引数に関数ごと送り込めるので便利といえばやはり便利なのです.

関数に関数ごと送り込み,必要な引数もセットで送れるのですから.

どんな時に便利かというと,

・ある微分方程式があって,異なるアルゴリズムを試して比較してみたいとき
・引数の値によって適用するアルゴリズムを変えたいとき
・同じアルゴリズムに対して,異なる解析対象を計算させたいとき

などです.関数ポインタのみ,関数ポインタと引数の組み合わせなど,様々な呼び出し方が
可能であるといえます.

void func(void (*func)(int), int x){
 func(x);
}

void func_A(int a){
 aを使った処理;
}

void func_B(int b){
 bを使った処理;
}

int main(){
 int i = 2;

 func(func_A, i);
 func(func_B, i);
 return 0;
}