1. 函數指針的聲明與初始化
可以聲明一個指針指向一個函數, 稱為指向函數的指針, 形式如下:
返回類型 (* 指針名) (參數列表);
這樣便可以用該指針間接調用函數, 如下所示:
int (*Compare)(const char*, const char*);
上述代碼聲明一個名為Compare的函數指針以保存某些函數的地址, 例如可使用Compare指向C++標準函數庫的字串比較函數strcmp.
- Compare = &strcmp;
- Compare = strcmp;
以上兩種的Compare初始化都是正確的, 函數名strcmp可以看做是指向函數的常指針, 此外還可以在聲明函數指針同時對其初始化, 如下:
int (*Compare)(const char*, const char*) = strcmp;
範例代碼:
- #include
- #include
- using namespace std;
- int main(){
- char sz1[] = "Hello,C++";
- char sz2[] = "Hello";
- int (*pF)(const char*,const char*);
- pF = strcmp;
- int result = pF(sz1,sz2);
- if(result=0){
- cout << "字串相等" << endl;
- }else{
- cout << "字串不相等" << endl;
- }
- }
Ps. 函數指針不支持算數運算, 對函數指針加減操作是沒有意義的.
沒有留言:
張貼留言