関数ポインタの簡単な使用例

確認用のミニマムなやつ

#include <stdio.h>

int add(int a, int b);
int sub(int a, int b);

int (*p[2])(int x, int y) = {
    add, sub
};

int main(void)
{
    int a = 14, b = 23;
    int c, d;
    c = 0;
    //c = 1;
    d = (*p[c])(a, b);  // c が 0 なら add, 1 なら sub が呼ばれる
    printf("%d\n", d);
    return 0;
}

int add(int a, int b)
{
    return a + b;
}

int sub(int a, int b)
{
    return a - b;
}

実行例 (c = 0)

37

実行例 (c = 1)

-9

関数ポインタを使うと、いくつかの関数を分岐により選択するとき、

コードの冗長性を防げるときがある。