透過一個實際的範例,來瞭解何謂函數指標:
// 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() 中。
參考來源 函數指標的進化論 (上)
沒有留言:
張貼留言