一看就會(huì)的C語(yǔ)言筆記——指針函數(shù)、函數(shù)指針、回調(diào)函數(shù)

//指針函數(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ù).

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在C語(yǔ)言中,五種基本數(shù)據(jù)類型存儲(chǔ)空間長(zhǎng)度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來(lái)閱讀 4,053評(píng)論 0 2
  • 指針是C語(yǔ)言中廣泛使用的一種數(shù)據(jù)類型。 運(yùn)用指針編程是C語(yǔ)言最主要的風(fēng)格之一。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu); ...
    朱森閱讀 3,615評(píng)論 3 44
  • 第1章 第一個(gè)C程序第2章 C語(yǔ)言基礎(chǔ)第3章 變量和數(shù)據(jù)類型第4章 順序結(jié)構(gòu)程序設(shè)計(jì)第5章 條件結(jié)構(gòu)程序設(shè)計(jì)第6章...
    小獅子365閱讀 10,874評(píng)論 3 71
  • 環(huán)信3.x自定義表情實(shí)現(xiàn)https://www.tuicool.com/articles/YVrmY33 很久沒(méi)有...
    阿龍飛閱讀 743評(píng)論 2 2
  • 會(huì)不會(huì)有這么一個(gè)人,你們沒(méi)有血脈相連,卻像是水溶進(jìn)水,彼此難分。你對(duì)她念念不忘,懷著想念。 那時(shí),六月的天,還沒(méi)有...
    許白白閱讀 526評(píng)論 0 3

友情鏈接更多精彩內(nèi)容