C語言 函數指標(指向函數的指標)詳解_C 語言

來源:互聯網
上載者:User

一個函數總是佔用一段連續的記憶體地區,函數名在運算式中有時也會被轉換為該函數所在記憶體地區的首地址,這和數組名非常類似。我們可以把函數的這個首地址(或稱入口地址)賦予一個指標變數,使指標變數指向函數所在的記憶體地區,然後通過指標變數就可以找到並調用該函數。這種指標就是函數指標。

函數指標的定義形式為:

returnType (*pointerName)(param list);

returnType 為函數傳回值類型,pointerNmae 為指標名稱,param list 為函數參數列表。參數列表中可以同時給出參數的類型和名稱,也可以只給出參數的類型,省略參數的名稱,這一點和函數原型非常類似。

注意( )的優先順序高於*,第一個括弧不能省略,如果寫作returnType *pointerName(param list);就成了函數原型,它表明函數的傳回值類型為returnType *。

【執行個體】用指標來實現對函數的調用。

#include <stdio.h>//返回兩個數中較大的一個int max(int a, int b){ return a>b ? a : b;}int main(){ int x, y, maxval; //定義函數指標 int (*pmax)(int, int) = max; //也可以寫作int (*pmax)(int a, int b) printf("Input two numbers:"); scanf("%d %d", &x, &y); maxval = (*pmax)(x, y); printf("Max value: %d\n", maxval); return 0;}

運行結果:

Input two numbers:10 50
Max value: 50

第 14 行代碼對函數進行了調用。pmax 是一個函數指標,在前面加 * 就表示對它指向的函數進行調用。注意( )的優先順序高於*,第一個括弧不能省略。

以上就是對 C語言函數指標的資料整理,後續繼續補充相關資料,謝謝大家對本站的支援!

聯繫我們

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