程式設計一定會碰到的問題之一:類型轉換,但是遇到的時候要怎麼解決,卻只能慢慢試,不是好辦法。這裡有個強者整理出來的方法,可以用來參考。
數據類型轉換整理(全)
星期日, 11月 30, 2008
星期三, 3月 26, 2008
[C] 甚麼是函數指標
函數指標 (function pointer) 是一種「指向函數的指標」,和一般指向資料的指標不同。凡是研究過許多系統原始碼 (例如:Linux Kernel、Borland OWL) 的人,對於函數指標應該都不陌生,因爲多數低階系統都使用 C 語言撰寫,而函數指標是傳統C語言中少數的動態機制,有許多不可取代的地方,所以這些 C 原始碼中到處可見函數指標。
透過一個實際的範例,來瞭解何謂函數指標:
參考來源 函數指標的進化論 (上)
透過一個實際的範例,來瞭解何謂函數指標:
// 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() 中。
參考來源 函數指標的進化論 (上)
訂閱:
文章 (Atom)