関数はメモリ内のストレージスペースも占有するため、開始アドレスもあります。したがって、ポインタを使用して関数の開始アドレスを指すこともできます。つまり、ポインタを使用して対応する関数を呼び出すことができます。
。関数ポインタの定義
形式:存储类型 数据类型 (*函数指针名)()
注1:*と関数名の間の括弧は必須です。そうでない場合、関数(つまり、ポインタ型を返す関数)へのポインタになります。
注2:関数型は呼び出される関数タイプの場合、関数パラメーターリストは呼び出される関数パラメーターリストと一致する必要があります。といった:
int max(int a,int b);
int min(int a,int b);
int (*fun)(int a,int b);
意味
関数ポインタがプログラムコードの格納領域を指している
関数ポインタの一般的な使用法-関数コールバックを実装します
。関数ポインタによって呼び出される関数。
たとえば、関数ポインタを関数に渡すと、同様のイベントを処理するときにさまざまなメソッドを柔軟に使用できます。
。呼び出し元は、被害者
が誰であるかを気にしません。特定のプロトタイプと制限を持つ呼び出された関数があることを知る必要があります。
例:
#include <iostream>
using namespace std;
int compute(int a,int b,int (*func)(int,int))
{
return func(a, b);
}
int max(int a,int b)
{
return ((a > b) ? a : b);
}
int min(int a, int b)
{
return ((a < b) ? a : b);
}
int sum(int a, int b)
{
return a+b;
}
int main()
{
cout<<compute(1, 10, max)<<endl;
cout << compute(1, 10, min) << endl;
cout << compute(1, 10, sum) << endl;
}
//结果为10 1 11