透過一個實際的範例,來瞭解何謂函數指標:
// FncPtr.cpp
#include
using std::cin;
using std::cout;
using std::endl;
// 聲明 Fnc1(), Fun2(), Twice()
float Fnc1(int);
float Fnc2(int);
double Twice(float (*)(int), int);
// 主程式
int main() {
int A = 3;
int B = 5;
count << "Twice(Fnc1, A)的值為: "
<< Twice(Fnc1, A) << endl;
count << "Twice(Fnc2, B)的值為: "
<< Twice(Fnc2, B) << endl;
}
float Fnc1(int N) {
return float (N*N);
}
float Fnc2(int N) {
return float (N*N*N);
}
double Twice(float (*pF)(int), int N) {
return 2.0 * double(pF(N));
}
執行結果:Twice(Fnc1, A)的值為:18 Twice(Fnc2, B)的值為:250此例中,pF 即為函數指標,而函數名稱本身 (Fun1 與 Fun2) 是常數的函數指標。通過函數指標,函數被資料化了 (變成指標),如此一來函數也可以被傳遞、被紀錄,所以 Fnc1 與 Fnc2 可以被當成參數,傳進 Twice() 中。
參考來源 函數指標的進化論 (上)