[C語言] function pointer介紹. 其實我覺得

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

其實我想之所以function pointer比較難以被接受的其中一個原因,是因為其語法格式與一般熟知的C語言是有段差距的,所以以下我們就一般的函數宣告以及function pointer ... GetunlimitedaccessOpeninappHomeNotificationsListsStoriesWrite[C語言]functionpointer介紹其實我覺得,pointer是C語言中的精隨,而functionpointer更是C語言中的利器,只是我覺得不管是我在C語言的學習過程,還是說在編程的過程中,functionpointer的重要性常常不受關注,很少被提起,再加上pointer本身就不好理解,functionpointer就更不好理解,所以關注的少,但我想functionpointer本身的好用,是值得好好地介紹。

首先我們來創造一個普通的function這裡我們先宣告一個普通的函數func,接收一個參數a,並回傳這個參數的值#includeintfunc(inta){//createafunctionnamedas"func"returna;};intmain(intargc,char*argv[]){return0;}接著我們需要創立一個pointer來指向這個function,如此這個pointer才是真正的functionpointer現在讓我們創造functionpointer在我們的主程式main中,我們宣告了一個functionpointer,int(*func_ptr)(int),來指向func這個函數#includeintfunc(inta){returna;};intmain(intargc,char*argv[]){int(*func_ptr)(int)=func;//makefunctionpointertopointfuncreturn0;}使用functionpointer現在我們使用著這個指向func函數的functionpointer,func_ptr(10)就可以得到結果#includeintfunc(inta){returna;};intmain(intargc,char*argv[]){int(*func_ptr)(int)=func;printf("%d\n",func_ptr(10));//usefunctionpointerreturn0;}Functionpointer對比一般的function其實我想之所以functionpointer比較難以被接受的其中一個原因,是因為其語法格式與一般熟知的C語言是有段差距的,所以以下我們就一般的函數宣告以及functionpointer的宣告這個語法格式的比較。

宣告型態在宣告型態這邊,我們可以看到如果一開始宣告的function為int的型態,則同樣在functionpointer的宣告,同樣也是使用int。

函數名稱這裡我們可以看到函數名稱為func,則在宣告functionpointer的時候,pointer的形式為擁有括號的(*func_ptr)。

參數型態在參數型態可以看到原本的函數是接收的一個int型態的變數a,所以我們在functionpointer的參數型態時,是使用擁有括號的(int)這樣來代表參數的型態。

小結由intfunc(inta)對應到的functionpointer型態int(*func_ptr)(int),functionpointer一開始比較難以接受的原因或許是整個語法型態跟一般的C語言相比會比較奇怪,尤其是(*func_ptr)與(int)的兩個括號,但是會使用functionpointer的話,那將是使用C語言的一大利器。

--MorefromMuLongPuYangFollowLovepodcastsoraudiobooks?Learnonthegowithournewapp.TryKnowableAboutHelpTermsPrivacyGettheMediumappGetstartedMuLongPuYang171FollowersFollowMorefromMediumSyedRahimSaqibAlexNetArchitectureBrianKathukyaINTRODUCTIONTOHTTPAviralJanvejaJavaCourse|Chapter1 :IntroductionThinkingOutCodeFindingLukethroughthecommandlinebyconsuminganAPIHelpStatusWritersBlogCareersPrivacyTermsAboutKnowable



請為這篇文章評分?