c++函數指標使用

來源:互聯網
上載者:User

可能在學校的學習中我們很少使用到函數指標,使用到的地方可能就是在api函數傳遞迴調函數的地方使用到了,不是很熟悉,學習總結下

1.定義:

指向某種函數類型的指標(函數類型由傳回值和形參確定)

2.格式:

函數傳回型別 (*函數指標名) (形參列表);

例如:

int (*pMax)(int a,int b);

 

3.賦值:
1>直接賦值:

int Max(int a, int b);int (*pMax)(int a, int b);pMax = Max;

 

2>取值賦值:

int Max(int a, int b);int (*pMax)(int a, int b);pMax = &Max;

 

4.調用

1>直接調用

int Max(int a, int b);int (*pMax)(int a, int b);void main(){  pMax = &Max;  int c = pMax(5, 4);  cout<<c<<endl;}

2>用解應用操作符:(解引用操作符與函數指標名必須用括弧框起來)

int Max(int a, int b);int (*pMax)(int a, int b);void main(){  pMax = &Max;  int c = (*pMax)(5, 4);//注意此處解引用操作符與函數指標名必須用括弧括起  cout<<c<<endl;}

 

5.函數指標做形參:

格式:

  傳回值 函數名(參數1,參數2,..,函數傳回值 (*函數指標名)(參數列表));

bool ChangIf(int &a, int &b, int (*pMax)(int a, int b));

 

6.返回函數指標:

  看傳回值為函數指標的函式宣告估計要鬱悶死,但是如果我們掌握技巧並且足夠細心,那麼看懂不是問題
  寫或者讀返回函數指標的函式宣告應該是由內而外

  舉個例子吧:寫一個傳回值類型為max函數類型指標的函數
  1>寫函數名,函數參數表

Test()

  2>在函數名前加*,並用括弧將現在寫好的內容括起來(這裡的括弧是必須的)

(*Test())

  3>在括弧前面寫函數指標傳回型別,在括弧後面寫函數指標參數表

int (*Test())(int a, int b);

 

注:

  1>用typedef先定義函數指標或者函數別名,再將這個名字用來做參數或者傳回值,或者定義指標變數這樣顯得易懂些, 可以提高程式的可讀性
  2>用typedef定義函數別名,在寫函數定義時這個名字可以直接用來做函數的參數,但是這個名字不能直接用來做函數傳回值

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.