指標函式與函式指標陣列— Function Pointers, Array of ...

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

前面我們知道指標可以指向任何的記憶體位址,這也代表指標可以指向任何一段可執行的程式碼,這也稱作為指標函式。

指標函式的宣告:(*代表指標的意思). GetunlimitedaccessOpeninappHomeNotificationsListsStoriesWrite指標函式與函式指標陣列—FunctionPointers,ArrayofFunctionPointer前面我們知道指標可以指向任何的記憶體位址,這也代表指標可以指向任何一段可執行的程式碼,這也稱作為指標函式。

指標函式的宣告:(*代表指標的意思)回傳的資料型態(*函式名稱)(參數)注意:括弧(*functionName)是很重要的部份,如果沒有括弧,編譯器會自動視為此函式回傳的只是一個指標而不是指標函式。

宣告指標函式之後,我們要賦予函式給指標函式(就像賦予指標一個記憶體位址)。

範例程式碼:#includevoidsayHi(inttimes);//宣告函式intmain(){void(*funcptr)(int);//functionpointerfuncptr=sayHi;//pointerassignment(把函式賦予給指標函式)funcptr(3);//呼叫函式return0;}voidsayHi(inttimes){for(inti;iintadd(intnum1,intnum2);//宣告加法函式intsubtract(intnum1,intnum2);//宣告減法函式intmultiply(intnum1,intnum2);//宣告乘法函式intdivide(intnum1,intnum2);//宣告除法函式intmain(){intx,y,choice,result;int(*op[4])(int,int);//宣告陣列函式指標,回傳值為整數型態op[0]=add;//將加函式指標存入陣列函式指標中op[1]=subtract;//將減函式指標存入陣列函式指標中op[2]=multiply;//將乘函式指標存入陣列函式指標中op[3]=divide;//將除函式指標存入陣列函式指標中printf("輸入兩個整數:");scanf("%d%d",&x,&y);printf("輸入0可以做加法,輸入1可以做減法,輸入2可以做乘法,輸入3可以做除法:");scanf("%d",&choice);result=op[choice](x,y);//把回傳值存入result中printf("%d",result);return0;}intadd(intx,inty){return(x+y);}intsubtract(intx,inty){return(x-y);}intmultiply(intx,inty){return(x*y);}intdivide(intx,inty){if(y!=0)return(x/y);elsereturn0;}這章比較複雜一點,需要時間消化一下。

所以不講太多東西,到這邊就好了,謝謝大家的閱讀。

--MorefromSharonPengFollow一起精進程式能力吧!!Lovepodcastsoraudiobooks?Learnonthegowithournewapp.TryKnowableAboutHelpTermsPrivacyGettheMediumappGetstartedSharonPeng152Followers一起精進程式能力吧!!FollowMorefromMediumamitperaneWhylanguagemattersforComputer&ProgrammingLanguageDr.NicolaMingottiThefirstQtprograminC++:qtHelloTheEmptyVesselCforbeginners(PartTen)VipulPatelinSpiderGettingStartedwithSTLHelpStatusWritersBlogCareersPrivacyTermsAboutKnowable



請為這篇文章評分?