C語言 函數(shù)指針(指向函數(shù)的指針)詳解
一個函數(shù)總是占用一段連續(xù)的內(nèi)存區(qū)域,函數(shù)名在表達式中有時也會被轉(zhuǎn)換為該函數(shù)所在內(nèi)存區(qū)域的首地址,這和數(shù)組名非常類似。我們可以把函數(shù)的這個首地址(或稱入口地址)賦予一個指針變量,使指針變量指向函數(shù)所在的內(nèi)存區(qū)域,然后通過指針變量就可以找到并調(diào)用該函數(shù)。這種指針就是函數(shù)指針。
函數(shù)指針的定義形式為:
returnType (*pointerName)(param list);
returnType 為函數(shù)返回值類型,pointerNmae 為指針名稱,param list 為函數(shù)參數(shù)列表。參數(shù)列表中可以同時給出參數(shù)的類型和名稱,也可以只給出參數(shù)的類型,省略參數(shù)的名稱,這一點和函數(shù)原型非常類似。
注意( )的優(yōu)先級高于*,第一個括號不能省略,如果寫作returnType *pointerName(param list);就成了函數(shù)原型,它表明函數(shù)的返回值類型為returnType *。
【實例】用指針來實現(xiàn)對函數(shù)的調(diào)用。
#include <stdio.h> //返回兩個數(shù)中較大的一個 int max(int a, int b){ return a>b ? a : b; } int main(){ int x, y, maxval; //定義函數(shù)指針 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; }
運行結(jié)果:
Input two numbers:10 50↙
Max value: 50
第 14 行代碼對函數(shù)進行了調(diào)用。pmax 是一個函數(shù)指針,在前面加 * 就表示對它指向的函數(shù)進行調(diào)用。注意( )的優(yōu)先級高于*,第一個括號不能省略。
以上就是對 C語言函數(shù)指針的資料整理,后續(xù)繼續(xù)補充相關(guān)資料,謝謝大家對本站的支持!
相關(guān)文章
C++解密Chrome80版本數(shù)據(jù)庫的方法示例代碼
這篇文章主要介紹了C++解密Chrome80版本數(shù)據(jù)庫的方法示例代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05C++ 動態(tài)創(chuàng)建按鈕及 按鈕的消息響應(yīng)
這篇文章主要介紹了C++ 動態(tài)創(chuàng)建按鈕及 按鈕的消息響應(yīng)的相關(guān)資料,需要的朋友可以參考下2015-06-06