第二章為程序設(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)行測試,然后決定調(diào)用哪個(gè)函數(shù)。比如:
顯然,對(duì)于一個(gè)具有上百個(gè)操作符的計(jì)算器來說,這條switch語句將會(huì)之很長。且為了使用switch語句,則表示操作符的代碼必須是整數(shù)。如果它們是從0開始的連續(xù)整數(shù),則可以使用轉(zhuǎn)移表實(shí)現(xiàn)相同的任務(wù),而轉(zhuǎn)移表就是一個(gè)函數(shù)指針數(shù)組,該數(shù)組的每個(gè)元素是一個(gè)函數(shù)的地址。如果有以下聲明:
其中,PF是一個(gè)指向返回值為double的函數(shù)的指針類型,該函數(shù)有兩個(gè)double類型參數(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ù)組的聲明之前。比如:
該語句初始化了4個(gè)元素,因此不再需要執(zhí)行初始化的賦值語句。注意,初始化列表中各個(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)》兩本書。
《面向AMetal框架與接口的編程(上)》書籍還在印刷中,具體開售時(shí)間另行通知。《程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)》書籍的淘寶購買鏈接如下,可復(fù)制到瀏覽器打開:
https://s.click.taobao.com/d3WStbw
公眾號(hào)介紹
致遠(yuǎn)電子官方微信公眾號(hào),一個(gè)匯聚500名工程師的研發(fā)測試分享平臺(tái),為您提供電子行業(yè)領(lǐng)先的產(chǎn)品技術(shù)與解決方案。
-
指針
+關(guān)注
關(guān)注
1文章
484瀏覽量
70942 -
C語言編程
+關(guān)注
關(guān)注
6文章
90瀏覽量
21426 -
周立功
+關(guān)注
關(guān)注
38文章
130瀏覽量
38062 -
數(shù)組
+關(guān)注
關(guān)注
1文章
419瀏覽量
26324 -
函數(shù)指針
+關(guān)注
關(guān)注
2文章
57瀏覽量
3912
原文標(biāo)題:周立功:函數(shù)指針數(shù)組的使用方法
文章出處:【微信號(hào):ZLG_zhiyuan,微信公眾號(hào):ZLG致遠(yuǎn)電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
周立功手把手教你學(xué)嵌入式編程:函數(shù)指針與指針函數(shù)的應(yīng)用
周立功教你學(xué)程序設(shè)計(jì)技術(shù):做好軟件模塊的分層設(shè)計(jì),回調(diào)函數(shù)要這樣寫
周立功教你學(xué)C語言編程:教你數(shù)組是如何保存指針的

所有C語言數(shù)組和指針的知識(shí)都在這里了!|周立功手把手教你學(xué)C語言編程
周立功教你學(xué)程序設(shè)計(jì)結(jié)構(gòu)體:內(nèi)存對(duì)齊和基本數(shù)據(jù)類型

周立功手把手教你學(xué)C語言編程:用數(shù)組,構(gòu)造一個(gè)雙重指針
周立功教你學(xué)C語言編程:結(jié)構(gòu)體,使程序設(shè)計(jì)更方便——內(nèi)置函數(shù)指針和嵌套結(jié)構(gòu)體

新書創(chuàng)作談:周立功教授數(shù)十年之心血力作《程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)》
【完整資料】《程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)》周立功數(shù)十年心血力作
C語言程序設(shè)計(jì)介紹
C語言程序設(shè)計(jì)教程之二維數(shù)組如何應(yīng)用二維數(shù)組的資料概述
C語言程序設(shè)計(jì)教程之指針使用的課件免費(fèi)下載

評(píng)論