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