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