[C語言]function pointer的應用[一]: pass function to function

文章推薦指數: 80 %
投票人數:10人

[C語言]function pointer的應用[一]: pass function to function. 我們在寫程式的時候,會對一個程式傳入參數。

參數的性質可以是一般的變數(pass by value)或者是 ... GetunlimitedaccessOpeninappHomeNotificationsListsStoriesWrite[C語言]functionpointer的應用[一]:passfunctiontofunction我們在寫程式的時候,會對一個程式傳入參數。

參數的性質可以是一般的變數(passbyvalue)或者是指標(passbyreference)。

那麼既然對於參數而言,可以是傳入參照形式的指標,那麼functionpointer也是指標的一種,所以其實也可以用傳入參照的方式來將”函數”傳入函數中。

functionpointer的宣告方法首先我們先回想一下,functionpointer的宣告形式為何int(*func_ptr)(int)=func;我們先別急著太快往下介紹,holdup,holdup。

現在讓那我們會想一下,一般的變數宣告方式為何?inta=10;在Function中的參數欄位宣告functionpointer我們把這兩種方式寫在一起,可以看到這兩種宣告方式的樣子int(*func_ptr)(int)=func;//declarefunctionpointerinta=10;//declaregeneralvariable那麼我們現在回想一下,如果我們要宣告一個function,在參數欄位的寫法數如何宣告的intfunc(inta,intb);現在,我們在參數欄位宣告functionpointerintfunc(inta,intb,int(*func_ptr)(int));將function傳入function的完整程式碼以下我們實作一個完整的程式碼,我們先實作了一個函數func,這個函數接收了兩個參數,並回傳這兩個參數相加的值。

另外我們再宣告一個add_func的函數,這個函數接收了三個參數,a,b以及一個functionpointer。

我們最後在主程式中,使用這樣的程式碼呼叫了addfunc的函數intd=add_func(10,20,func);add_func中會使用傳進來的函數func,將其接收的兩個變數相加,並且回傳給函數中的變數c,最後在當回傳值。

#include//宣告一個函數func,這個函數用來相加接收到的兩個參數,並且回傳intfunc(inta,intb){returna+b;};//宣告一個函數add_func,這個函數接收兩個變數a與b,以及一個function//pointerintadd_func(inta,intb,int(*func_ptr)(int,int)){intc;c=func_ptr(a,b);returnc;};intmain(intargc,char*argv[]){//add_func接收的三個參數分別為10,20以及func。

add_func會使用//func這個函數,將10與20相加。

而add_func會回傳這個結果intd=add_func(10,20,func);printf("%d\n",d);return0;}延伸閱讀[C語言]functionpointer介紹其實我覺得,pointer是C語言中的精隨,而functionpointer更是C語言中的利器,只是我覺得不管是我在C語言的學習過程,還是說在編程的過程中,function…medium.com[C語言]functionpointer接收多個參數或者是無參數的宣告型態在之前的一篇文章中,提到了宣告functionpointer的方法,但在那一篇文當中,只示範了只有一個參數的情況,這邊我們嘗試實作只有沒有參數的情況下和兩個參數的情況下,functionpointer的宣告方式。

medium.com--MorefromMuLongPuYangFollowLovepodcastsoraudiobooks?Learnonthegowithournewapp.TryKnowableAboutHelpTermsPrivacyGettheMediumappGetstartedMuLongPuYang171FollowersFollowMorefromMediumadamskyRARACHUTE — RedHat’sinternshipparachuteMikołajMaślankaLinux — agentleintroductionandbasiccommands.VinayakSharmaHuffmanCodingHeCodesIT4sumProblemLeetcode — PythonSolutionsHelpStatusWritersBlogCareersPrivacyTermsAboutKnowable



請為這篇文章評分?