函數名與函數指標

來源:互聯網
上載者:User

  先來看一個程式:

/*************************************************************    函數指標與函數名**************************************************************/#include <iostream>using namespace std;int max(int, int);int main(){    cout<<max(1, 2)<<endl;    cout<<(*max)(1, 2)<<endl;    cout<<max<<endl;    cout<<(*max)<<endl;    cout<<&max<<endl;    int (*p)(int, int);    p = max;    cout<<p(1, 2)<<endl;    cout<<(*p)(1, 2)<<endl;    cout<<p<<endl;    cout<<(*p)<<endl;    cout<<&p<<endl;    int (*q)(int, int);    q = &max;    cout<<q(1, 2)<<endl;    cout<<(*q)(1, 2)<<endl;    cout<<q<<endl;    cout<<(*q)<<endl;    cout<<&q<<endl;    return 0;}int max(int a, int b){    return a > b? a : b;}

  運行結果:

220040120D0040120D0040120D220040120D0040120D0012FF7C220040120D0040120D0012FF78

 引用文章《徹底搞定C指標-函數名不得已函數指標》的結論語: 

  1. 其實,max的函數名與函數指標p, q都是一樣的,即都是函數指標。max函數名是一個函數指標常量,而p, q是一個函數數指標變數,這是它們的關係。
  2. 但函數名調用如果都得如(*max)(1, 2);這樣,那書寫與讀起來都是不方便和不習慣的。所以C語言的設計者們才會設計成又可允許max(1, 2);這種形式地調用(這樣方便多了並與數學中的函數形式一樣)。
  3. 為統一起見,P, q函數指標變數也可以p(1, 2), q(1, 2)的形式來調用。
  4. 賦值時,即可P = max形式,也可q = &max。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.