所謂函數(shù)指針,本質(zhì)是一個(gè)指針,是指向函數(shù)的指針,即通過(guò)一個(gè)指針就可以調(diào)用一個(gè)函數(shù)。下面我們來(lái)舉例為大家講解,類似的,基本語(yǔ)法我們知道一個(gè)指針可以指向它同類型的變量,函數(shù)指針也是,函數(shù)指針?biāo)x類型和原函數(shù)的類型要一樣,包括參數(shù)個(gè)數(shù)、類型,返回值類型,這樣才能一致,才能賦值,讓這個(gè)函數(shù)指針指向原函數(shù)。
比如有一個(gè)函數(shù):
int Max(int x,int y) { if(x>y) return x; return y; }
這是一個(gè)找兩個(gè)數(shù)最大值函數(shù),如果我們想通過(guò)一個(gè)函數(shù)指針來(lái)指向它,那么我們需要這么定義一個(gè)函數(shù)指針:
int (*p)(int x,int y); //定義函數(shù)指針
這個(gè)指針叫p,它就是一個(gè)函數(shù)指針,即可以指向一個(gè)參數(shù)有兩個(gè)整型變量,返回值也為整型的函數(shù),那很明顯和前面定義的Max函數(shù)類型一樣,那么就可以做指向的賦值了,如下:
p=Max; //使p指向原函數(shù)
接下來(lái)如果我們要使用這個(gè)Max函數(shù),用指針的話可以這樣調(diào)用:
p(3,5);//通過(guò)函數(shù)指針調(diào)用
即可調(diào)用函數(shù)swap,并將3和5兩個(gè)實(shí)參傳了進(jìn)去,將會(huì)運(yùn)行得到5的結(jié)果。
大家可以上機(jī)實(shí)驗(yàn)完成!
完整代碼如下:
#include<stdio.h> int Max(int x,int y) { if(x>y) return x; return y; } int main() { int a; int (*p)(int x,int y); p=Max; a=p(3,5); printf("%d\n",a); return 0; }
C語(yǔ)言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語(yǔ)言學(xué)練課程
解決困擾你多年的C語(yǔ)言疑難雜癥特性的C語(yǔ)言進(jìn)階課程
從零到寫出一個(gè)爬蟲的Python編程課程
只會(huì)語(yǔ)法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程