C++程式執行時,系統會替函數配置記憶體空間,用來儲存該函數程式碼。
當呼叫該函數時,程式流程即跳至此函數的起始位址,並從此位址開始執行函數。
因此,若是將函數指標指向該函數的起始位址,則在程式中,將可透過函數指標來呼叫該函數。
宣告函數指標格式如下:
回傳資料型態 (*函數指標名稱)(參數1 資料型態, 參數2 資料型態, ...);
下列為範例程式...
// =================================
// FileName: FuncPtr.cpp
// Author: Edison.Shih.
#include <iostream.h>
int Add_Num(int, int);
int Sub_Num(int, int);
// =================================
int main(int argc, char **argv)
{
int x, y;
int (*p_Func)(int, int); // 函數指標
cout << "input x:";
cin >> x;
cout << "input y:";
cin >> y;
p_Func = Add_Num;
cout << "x+y=" << (*p_Func)(x,y) << endl;
p_Func = Sub_Num;
cout << "x-y=" << (*p_Func)(x,y) << endl;
return 0;
}
// =================================
int Add_Num(int a, int b) {return (a+b);}
int Sub_Num(int a, int b) {return (a-b);}
// =================================
輸出結果如下所示:
input x:3
input y:4
x+y=7
x-y=-1