第二章為程序設(shè)計(jì)技術(shù),本文為2.1.4 函數(shù)指針數(shù)組。
>>>>2.1.4 函數(shù)指針數(shù)組
如果要實(shí)現(xiàn)一個(gè)袖珍式計(jì)算器,假設(shè)程序的其它部分已經(jīng)讀入2個(gè)數(shù)op1和op2,以及一個(gè)操作符oper,可以使用下面的代碼對(duì)操作符進(jìn)行測(cè)試,然后決定調(diào)用哪個(gè)函數(shù)。比如:
顯然,對(duì)于一個(gè)具有上百個(gè)操作符的計(jì)算器來(lái)說(shuō),這條switch語(yǔ)句將會(huì)之很長(zhǎng)。且為了使用switch語(yǔ)句,則表示操作符的代碼必須是整數(shù)。如果它們是從0開(kāi)始的連續(xù)整數(shù),則可以使用轉(zhuǎn)移表實(shí)現(xiàn)相同的任務(wù),而轉(zhuǎn)移表就是一個(gè)函數(shù)指針數(shù)組,該數(shù)組的每個(gè)元素是一個(gè)函數(shù)的地址。如果有以下聲明:
其中,PF是一個(gè)指向返回值為double的函數(shù)的指針類(lèi)型,該函數(shù)有兩個(gè)double類(lèi)型參數(shù)。假設(shè)需要聲明一個(gè)包含4個(gè)元素的數(shù)組變量oper_func,用于存儲(chǔ)4個(gè)函數(shù)的地址。即可使用PF定義一個(gè)存儲(chǔ)函數(shù)指針的數(shù)組:
其中,oper_func為指向函數(shù)的指針的數(shù)組,上述聲明與以下聲明:
雖然形式不一樣,但其意義完全相同。
如果給函數(shù)指針數(shù)組變量中的元素賦值,則與普通數(shù)組元素相同。比如:
在上述表達(dá)式中,除了等號(hào)右側(cè)是函數(shù)名之外,這是一個(gè)正常的數(shù)組元素,因此,同樣可以在定義中初始化指針數(shù)組變量的所有元素。創(chuàng)建一個(gè)轉(zhuǎn)移表,需要聲明并初始化一個(gè)函數(shù)指針數(shù)組,但一定要確保這些函數(shù)的原型出現(xiàn)在這個(gè)數(shù)組的聲明之前。比如:
該語(yǔ)句初始化了4個(gè)元素,因此不再需要執(zhí)行初始化的賦值語(yǔ)句。注意,初始化列表中各個(gè)函數(shù)名的正確順序取決于程序中用于表示每個(gè)操作符的整型代碼,這個(gè)示例中的ADD、SUB、MUL和DIV分別對(duì)應(yīng)0、1、2、3.。其調(diào)用形式如下:
即oper從數(shù)組中選擇正確的函數(shù)指針,函數(shù)調(diào)用操作符執(zhí)行這個(gè)函數(shù)。當(dāng)然,也可以去掉數(shù)組的大小,由初始化列表確定數(shù)組的大小。比如:
其中,大括號(hào)內(nèi)的初始值個(gè)數(shù)確定了數(shù)組中元素的數(shù)目,因此函數(shù)指針數(shù)組的初始化列表與其它數(shù)組的初始化列表的作用一樣。
在公眾號(hào)后臺(tái)回復(fù)關(guān)鍵字【編程】,即可在線閱讀《面向AMetal框架與接口的編程(上)》和《程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)》兩本書(shū)。
《面向AMetal框架與接口的編程(上)》書(shū)籍還在印刷中,具體開(kāi)售時(shí)間另行通知。《程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)》書(shū)籍的淘寶購(gòu)買(mǎi)鏈接如下,可復(fù)制到瀏覽器打開(kāi):
https://s.click.taobao.com/d3WStbw
公眾號(hào)介紹
致遠(yuǎn)電子官方微信公眾號(hào),一個(gè)匯聚500名工程師的研發(fā)測(cè)試分享平臺(tái),為您提供電子行業(yè)領(lǐng)先的產(chǎn)品技術(shù)與解決方案。
-
指針
+關(guān)注
關(guān)注
1文章
482瀏覽量
70614 -
C語(yǔ)言編程
+關(guān)注
關(guān)注
6文章
90瀏覽量
21152 -
周立功
+關(guān)注
關(guān)注
38文章
130瀏覽量
37769 -
數(shù)組
+關(guān)注
關(guān)注
1文章
417瀏覽量
26034 -
函數(shù)指針
+關(guān)注
關(guān)注
2文章
56瀏覽量
3835
原文標(biāo)題:周立功:函數(shù)指針數(shù)組的使用方法
文章出處:【微信號(hào):ZLG_zhiyuan,微信公眾號(hào):ZLG致遠(yuǎn)電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論