C言語では、関数ポインタは関数のアドレスを格納する変数です。これにより、プログラムは関数を間接的に呼び出すことができます。関数ポインターは、コールバック関数の実装、動的ディスパッチの実装、ポリモーフィズムのメカニズムの提供など、さまざまな方法で使用できます。
この例では、2 つの整数を取り、整数を返す関数”add”を指す関数ポインタを宣言します。次に、関数”add”のアドレスをポインターに割り当てます。関数ポインタに2 つの整数を引数として渡すことにより、ポインターを介して関数”add”を間接的に呼び出します。
サンプル
fpointer_sample1.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include <stdio.h> // 2 つの整数を引数として、その合計を返す関数 int add(int a, int b) { return a + b; } int main() { // 関数ポインタの宣言 int (*func_ptr)(int, int); // 「add」関数のアドレスをポインタ変数に代入 func_ptr = &add; // ポインタを介して関数を間接的に呼び出す int result = (*func_ptr)(2, 3); printf("The result is %d\n", result); return 0; } |
実行結果
end