资源描述:
《C语言指针函数和函数指针》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、C语言指针函数和函数指针Clanguagefunctionpointerandfunctionpointer・Txtwithoutalineyouseemeonline,hurrytostealth,restassured.I'mnotgoingtomesswithyou.GoodnowbutneverabandontheydohaveafunctionpointerWhenafunctiondeclaresthatitsreturnvalueisapointer,itactuallyreturnsanaddresstothecalli
2、ngfunctionforanexpressionthatrequiresapointeroraddress・Format:Thetypespecifier*functionname(parameter)Ofcourse,sincethereturnisanaddress,sothetypespecifierisgenerallyint・Forexample:int^GetDate():Int*AAA(int,int);Thefunctionreturnsanaddressvaluethatisoftenusedtoreturnthea
3、ddressofanelementofanarray.Int*GetDate(int,wk,int,Dy);(main)Int,wk,dy;DoPrintf(Enter,week(1-5)day(1-7)\);Scanf(%d%d,&wk,&dy);}Wh订e(wk4、
5、wk>5
6、
7、dy8、
9、dy>7);Printf(〃%d\〃,*GetDate(wk,Dy)):}Int*GetDate(int,wk,int,Dy){Staticintcalendar[5][7]={{1,2,3,4,5,6,7},{8,9,10
10、,11,12,13,14},{15,16,17,18,19,20,21},{22,23,24,25,26,27,28},{29,30,31,-1}};Return&calendar[wk-1][dy~l];}Theprogramshouldbewellunderstood,andthesubroutinereturnstheaddressoftheelementofthearray.Theoutputisthevalueinthisaddress・Two,functionpointerThepointertothefunctioncon
11、tainstheaddressofthefunction,andyoucancallthefunctionthroughit.Thedeclarationformatisasfollows:Thetypespecifier(*functionname)(parameters)Infact,thiscannotbecalledafunctionname・Itshouldbecalledthevariablenameofthepointer・Thisspecialpointerpointstoafunctionthatreturnsthei
12、ntegervalue・Thedeclarationandcuttingitpointstothefunctiondeclarationconsistent・Theparenthesesoutsidethepointerandpointeroperatorschangethedefaultoperatorprecedence・Ifthereisnoparentheses,itbecomesaprototypedeclarationofthefunctionthatreturnstheintegerpointer.Suchas:Void(
13、*fptr)();Assigningtheaddressofafunctiontoafunctionpointercantakethefollowingtwoforms:Fpti-&Function;Fpti-Function;Theaddressoperatorisnotrequiredbecauseonlyafunctionidentifierrepresentsitsaddress,andifitisafunctioncall,itmustincludeaparametertableenclosedinparentheses・Th
14、efollowingtwowayscanbeusedtocallfunctionsthroughpointers:X二(*fptr)();X=fptr();Thesecondformatslooklikef