//指針函數(shù):指針函數(shù)本質(zhì)是一個(gè)函數(shù),只不過(guò)返回值為某一類型的指針(地址值)。
//函數(shù)返回值必須用同類型的變量來(lái)接受,也就是說(shuō),指針函數(shù)的返回值必須賦值給同類型的指針變量。
//指針函數(shù)的定義格式:類型名 *函數(shù)名(函數(shù)參數(shù)列表);(其中*號(hào)靠左靠右都行,比如int* sum(int a,int b);或者int *sum(int a,int b);)
//函數(shù)指針:函數(shù)指針本質(zhì)是一個(gè)指針,只不過(guò)這個(gè)指針指向一個(gè)函數(shù)。
//常見的函數(shù)都有其入口,比如main()函數(shù)是整個(gè)程序的入口,我們調(diào)用的其他函數(shù)都有其特定的入口,正如我們可以通過(guò)地址找到相應(yīng)的變量一樣,我們也可以通過(guò)地址找到相應(yīng)的函數(shù)。而這個(gè)存儲(chǔ)著函數(shù)地址的指針就是函數(shù)指針。
//換言之,我們所說(shuō)的指針變量通暢指向一個(gè)整形、字符型、或者數(shù)組等變量,而函數(shù)指針指向的是函數(shù)。
//正如我們可以通過(guò)指針訪問(wèn)相應(yīng)的變量,函數(shù)指針也可以像函數(shù)一樣用于調(diào)用函數(shù)、傳遞參數(shù)。
//函數(shù)指針定義格式:類型名 (*函數(shù)名)(函數(shù)參數(shù)列表)
//我們可以發(fā)現(xiàn),這里的"*函數(shù)名"是用括號(hào)括起來(lái)的
//
//回調(diào)函數(shù):函數(shù)指針作為某個(gè)函數(shù)的參數(shù)
//我們知道,函數(shù)指針變量也是一個(gè)變量,那么作為變量當(dāng)然也可以當(dāng)做參數(shù)來(lái)使用。
//為了理解回調(diào)函數(shù),我們先要搞清楚回調(diào)函數(shù)有什么作用。比如老板、經(jīng)理、你三個(gè)角色。老板通常是規(guī)則的指定著,經(jīng)理按照規(guī)則指派相應(yīng)的人去做事,而你就是任務(wù)的具體執(zhí)行者。
//當(dāng)老板要求經(jīng)理去做一個(gè)事情,那么老板就是主調(diào)函數(shù),經(jīng)理就是回調(diào)函數(shù),你按照規(guī)則去處理事情就是相應(yīng)回調(diào)函數(shù)。你處理的結(jié)果會(huì)反饋給經(jīng)理,經(jīng)理拿著你的結(jié)果再反饋給老板。老板就可以使用這個(gè)結(jié)果去做相關(guān)的事情了。
//在這個(gè)環(huán)節(jié)中,你只需要按照指定的規(guī)則去做事,而經(jīng)理不需要考慮事情是怎么做的,他只需要把相應(yīng)的事情分配給對(duì)應(yīng)的人去處理即可,然后將獲取的結(jié)果反饋給老板。如果規(guī)則有變,只需要對(duì)應(yīng)的員工知道哪里改變了,而經(jīng)理不需要關(guān)注這些細(xì)節(jié)。
//以上就是回調(diào)函數(shù)

小編給大家推薦一個(gè)學(xué)習(xí)氛圍超好的地方,C/C++交流企鵝裙:870963251!適合在校大學(xué)生,小白,想轉(zhuǎn)行,想通過(guò)這個(gè)找工作的加入。裙里有大量學(xué)習(xí)資料,有大神解答交流問(wèn)題,每晚都有免費(fèi)的直播課程
例如:
1、指針函數(shù)
#include
int *sum(int a,int b);
int main()
{
int a=1;
int b=2;
int *P=NULL;
p=sum(a,b);
printf("%d",*p);
return 0;
}
int *sum(int a,int b)
{
static int sum=0;
sum=a+b;
return ∑
}
2、函數(shù)指針
#include
int max(int x, int y)
{
return x > y ? x : y;
}
int main(void)
{
/* p 是函數(shù)指針 */
int (* p)(int, int) = & max; // &可以省略
int a, b, c, d;
printf("請(qǐng)輸入三個(gè)數(shù)字:");
scanf("%d %d %d", & a, & b, & c);
/* 與直接調(diào)用函數(shù)等價(jià),d = max(max(a, b), c) */
d = p(p(a, b), c);
printf("最大的數(shù)字是: %d", d);
return 0;
}
3、回調(diào)函數(shù)
#include
int add_ret() ;
int add(int a , int b , int (*add_value)())
{
return (*add_value)(a,b);
}
int main(void)
{
int sum = add(3,4,add_ret);
printf("sum:%d",sum);
return 0 ;
}
int add_ret(int a , int b)
{
return a+b ;
}
最后:
1、指針函數(shù)不同于函數(shù)指針, int (*f)(int a);或者char (*f1)(void);
2、函數(shù)指針聲明為指針,它與變量指針不同之處是,它不是指向變量,而是指向函數(shù)。所以一定要注意。
3、函數(shù)指針有兩個(gè)用途:調(diào)用函數(shù)和做函數(shù)的參數(shù).