C語言 函數(shù)指針(指向函數(shù)的指針)詳解
一個(gè)函數(shù)總是占用一段連續(xù)的內(nèi)存區(qū)域,函數(shù)名在表達(dá)式中有時(shí)也會被轉(zhuǎn)換為該函數(shù)所在內(nèi)存區(qū)域的首地址,這和數(shù)組名非常類似。我們可以把函數(shù)的這個(gè)首地址(或稱入口地址)賦予一個(gè)指針變量,使指針變量指向函數(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ù)的名稱,這一點(diǎn)和函數(shù)原型非常類似。
注意( )的優(yōu)先級高于*,第一個(gè)括號不能省略,如果寫作returnType *pointerName(param list);就成了函數(shù)原型,它表明函數(shù)的返回值類型為returnType *。
【實(shí)例】用指針來實(shí)現(xiàn)對函數(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; //也可以寫作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 行代碼對函數(shù)進(jìn)行了調(diào)用。pmax 是一個(gè)函數(shù)指針,在前面加 * 就表示對它指向的函數(shù)進(jìn)行調(diào)用。注意( )的優(yōu)先級高于*,第一個(gè)括號不能省略。
以上就是對 C語言函數(shù)指針的資料整理,后續(xù)繼續(xù)補(bǔ)充相關(guān)資料,謝謝大家對本站的支持!
相關(guān)文章
C++解密Chrome80版本數(shù)據(jù)庫的方法示例代碼
這篇文章主要介紹了C++解密Chrome80版本數(shù)據(jù)庫的方法示例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05C++中臨時(shí)對象的常見產(chǎn)生情況及其解決的方案
這篇文章主要是探討常見的臨時(shí)對象產(chǎn)生的情況,及其如何避免和解決這種臨時(shí)對象產(chǎn)生的方式。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09C++ 動態(tài)創(chuàng)建按鈕及 按鈕的消息響應(yīng)
這篇文章主要介紹了C++ 動態(tài)創(chuàng)建按鈕及 按鈕的消息響應(yīng)的相關(guān)資料,需要的朋友可以參考下2015-06-06