C言語 関数ポインタとは?役割・使い方をわかりやすく解説
関数ポインタとは、関数を指すポインタ変数であり、関数のアドレスを保存するために使用されます。関数ポインタの目的と使い方は次の通りです:
- 効果:
- 関数間で関数を渡すことができ、別の関数の引数として使用して、関数のコールバックを実現できます。
- 異なる条件に基づいて異なる関数を呼び出すことができる、関数の動的呼び出しが可能です。
- 関数のポリモーフィズムが実現でき、関数ポインタを使用して異なる関数を呼び出すことで異なる機能を実現できます。
- 使い方:
- 関数ポインタを宣言する方法は、以下の通りです:戻り値の型 (*ポインタ変数名)(引数リスト)。
- 関数のアドレスを代入する:ポインタ変数名 = 関数名または ポインタ変数名 = &関数名
- 関数ポインタを使用して関数を呼び出す場合:(*ポインタ変数名)(引数リスト)またはポインタ変数名(引数リスト)
コードサンプル:
#include <stdio.h>
void hello() {
printf("Hello, world!\n");
}
void goodbye() {
printf("Goodbye, world!\n");
}
int main() {
void (*funcPtr)();
funcPtr = hello;
funcPtr(); // 调用 hello 函数
funcPtr = goodbye;
funcPtr(); // 调用 goodbye 函数
return 0;
}
このコードでは、関数ポインタfuncPtrが宣言され、その後、それがhello関数とgoodbye関数のアドレスにそれぞれ割り当てられ、最後に関数ポインタを使用してこれらの関数を呼び出します。