第二章為程序設(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)相同的任務,而轉(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分別對應0、1、2、3.。其調(diào)用形式如下:

即oper從數(shù)組中選擇正確的函數(shù)指針,函數(shù)調(diào)用操作符執(zhí)行這個函數(shù)。當然,也可以去掉數(shù)組的大小,由初始化列表確定數(shù)組的大小。比如:

其中,大括號內(nèi)的初始值個數(shù)確定了數(shù)組中元素的數(shù)目,因此函數(shù)指針數(shù)組的初始化列表與其它數(shù)組的初始化列表的作用一樣。
在公眾號后臺回復關(guān)鍵字【編程】,即可在線閱讀《面向AMetal框架與接口的編程(上)》和《程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)》兩本書。
《面向AMetal框架與接口的編程(上)》書籍還在印刷中,具體開售時間另行通知。《程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)》書籍的淘寶購買鏈接如下,可復制到瀏覽器打開:
https://s.click.taobao.com/d3WStbw
公眾號介紹
致遠電子官方微信公眾號,一個匯聚500名工程師的研發(fā)測試分享平臺,為您提供電子行業(yè)領(lǐng)先的產(chǎn)品技術(shù)與解決方案。
-
指針
+關(guān)注
關(guān)注
1文章
484瀏覽量
71843 -
C語言編程
+關(guān)注
關(guān)注
6文章
90瀏覽量
22010 -
周立功
+關(guān)注
關(guān)注
38文章
130瀏覽量
38721 -
數(shù)組
+關(guān)注
關(guān)注
1文章
420瀏覽量
27351 -
函數(shù)指針
+關(guān)注
關(guān)注
2文章
57瀏覽量
4151
原文標題:周立功:函數(shù)指針數(shù)組的使用方法
文章出處:【微信號:ZLG_zhiyuan,微信公眾號:ZLG致遠電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
周立功手把手教你學嵌入式編程:函數(shù)指針與指針函數(shù)的應用
周立功教你學程序設(shè)計技術(shù):做好軟件模塊的分層設(shè)計,回調(diào)函數(shù)要這樣寫
周立功教你學C語言編程:教你數(shù)組是如何保存指針的
所有C語言數(shù)組和指針的知識都在這里了!|周立功手把手教你學C語言編程
周立功教你學程序設(shè)計結(jié)構(gòu)體:內(nèi)存對齊和基本數(shù)據(jù)類型
周立功手把手教你學C語言編程:用數(shù)組,構(gòu)造一個雙重指針
周立功教你學C語言編程:結(jié)構(gòu)體,使程序設(shè)計更方便——內(nèi)置函數(shù)指針和嵌套結(jié)構(gòu)體
新書創(chuàng)作談:周立功教授數(shù)十年之心血力作《程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)》
【完整資料】《程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)》周立功數(shù)十年心血力作
C語言程序設(shè)計介紹
C語言程序設(shè)計教程之二維數(shù)組如何應用二維數(shù)組的資料概述
C語言程序設(shè)計教程之指針使用的課件免費下載
周立功教你學C語言編程與程序設(shè)計:這樣寫函數(shù)指針數(shù)組最好用
評論