C語(yǔ)言 函數(shù)指針(指向函數(shù)的指針)詳解
一個(gè)函數(shù)總是占用一段連續(xù)的內(nèi)存區(qū)域,函數(shù)名在表達(dá)式中有時(shí)也會(huì)被轉(zhuǎn)換為該函數(shù)所在內(nèi)存區(qū)域的首地址,這和數(shù)組名非常類(lèi)似。我們可以把函數(shù)的這個(gè)首地址(或稱(chēng)入口地址)賦予一個(gè)指針變量,使指針變量指向函數(shù)所在的內(nèi)存區(qū)域,然后通過(guò)指針變量就可以找到并調(diào)用該函數(shù)。這種指針就是函數(shù)指針。
函數(shù)指針的定義形式為:
returnType (*pointerName)(param list);
returnType 為函數(shù)返回值類(lèi)型,pointerNmae 為指針名稱(chēng),param list 為函數(shù)參數(shù)列表。參數(shù)列表中可以同時(shí)給出參數(shù)的類(lèi)型和名稱(chēng),也可以只給出參數(shù)的類(lèi)型,省略參數(shù)的名稱(chēng),這一點(diǎn)和函數(shù)原型非常類(lèi)似。
注意( )的優(yōu)先級(jí)高于*,第一個(gè)括號(hào)不能省略,如果寫(xiě)作returnType *pointerName(param list);就成了函數(shù)原型,它表明函數(shù)的返回值類(lèi)型為returnType *。
【實(shí)例】用指針來(lái)實(shí)現(xiàn)對(duì)函數(shù)的調(diào)用。
#include <stdio.h>
//返回兩個(gè)數(shù)中較大的一個(gè)
int max(int a, int b){
return a>b ? a : b;
}
int main(){
int x, y, maxval;
//定義函數(shù)指針
int (*pmax)(int, int) = max; //也可以寫(xiě)作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;
}
運(yùn)行結(jié)果:
Input two numbers:10 50↙
Max value: 50
第 14 行代碼對(duì)函數(shù)進(jìn)行了調(diào)用。pmax 是一個(gè)函數(shù)指針,在前面加 * 就表示對(duì)它指向的函數(shù)進(jìn)行調(diào)用。注意( )的優(yōu)先級(jí)高于*,第一個(gè)括號(hào)不能省略。
以上就是對(duì) C語(yǔ)言函數(shù)指針的資料整理,后續(xù)繼續(xù)補(bǔ)充相關(guān)資料,謝謝大家對(duì)本站的支持!
相關(guān)文章
關(guān)于C++中構(gòu)造函數(shù)初始化成員列表的總結(jié)
下面小編就為大家?guī)?lái)一篇關(guān)于C++中構(gòu)造函數(shù)初始化成員列表的總結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12
C語(yǔ)言單鏈表版學(xué)生信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言單鏈表版學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
C語(yǔ)言實(shí)現(xiàn)天氣信息管理系統(tǒng)
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)天氣信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06
C++&&Opencv實(shí)現(xiàn)控制臺(tái)字符動(dòng)畫(huà)的方法
這篇文章主要介紹了C++&&Opencv實(shí)現(xiàn)控制臺(tái)字符動(dòng)畫(huà)的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
C++?OpenCV實(shí)現(xiàn)boxfilter方框?yàn)V波的方法詳解
C/C++寬窄字符轉(zhuǎn)換與輸出的多種實(shí)現(xiàn)方法
C語(yǔ)言中的自定義類(lèi)型之結(jié)構(gòu)體與枚舉和聯(lián)合詳解

