0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

周立功教你學(xué)C語言編程與程序設(shè)計(jì):這樣寫函數(shù)指針數(shù)組最好用

AGk5_ZLG_zhiyua ? 來源:未知 ? 作者:電子大兵 ? 2017-08-31 14:06 ? 次閱讀

第二章為程序設(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

延伸閱讀

周立功:做好軟件模塊的分層設(shè)計(jì)必須掌握的回調(diào)函數(shù)

周立功:動(dòng)態(tài)分布內(nèi)存——free()函數(shù)與realloc()函數(shù)

周立功:動(dòng)態(tài)分布內(nèi)存——malloc()函數(shù)與calloc()函數(shù)

周立功:用數(shù)組,構(gòu)造一個(gè)雙重指針

周立功:你知道數(shù)組也能保存指針嗎?

周立功:字符真正價(jià)值在于形成字符序列——字符串函數(shù)

周立功:字符真正價(jià)值在于形成字符序列——字符串的輸入輸出

周立功:字符真正價(jià)值在于形成字符序列——字符串的引用

周立功:字符能像整數(shù)一樣計(jì)算

周立功:如何將二維數(shù)組作為函數(shù)參數(shù)傳遞

周立功:算法的泛化問題,你應(yīng)該知道

周立功:泛型編程——實(shí)現(xiàn)代碼復(fù)用

周立功:數(shù)組訪問的四大方法與慣用法

周立功:數(shù)組的規(guī)定,你知道嗎?

周立功:C語言數(shù)組與指針詳解

周立功:實(shí)現(xiàn)和使用易重用的抽象接口

周立功:設(shè)計(jì)良好的程序接口需注意的5個(gè)事項(xiàng)

周立功:程序設(shè)計(jì)的新思維和新方法

周立功:拆分條件語句讓代碼更易理解——綜合表達(dá)式與條件表達(dá)式?

周立功:拆分條件語句讓代碼更易理解——邏輯表達(dá)式

公眾號(hào)介紹

致遠(yuǎn)電子官方微信公眾號(hào),一個(gè)匯聚500名工程師的研發(fā)測試分享平臺(tái),為您提供電子行業(yè)領(lǐng)先的產(chǎn)品技術(shù)與解決方案。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 指針
    +關(guān)注

    關(guān)注

    1

    文章

    475

    瀏覽量

    70457
  • C語言編程
    +關(guān)注

    關(guān)注

    6

    文章

    90

    瀏覽量

    21052
  • 周立功
    +關(guān)注

    關(guān)注

    38

    文章

    130

    瀏覽量

    37438
  • 數(shù)組
    +關(guān)注

    關(guān)注

    1

    文章

    411

    瀏覽量

    25821
  • 函數(shù)指針
    +關(guān)注

    關(guān)注

    2

    文章

    55

    瀏覽量

    3760

原文標(biāo)題:周立功:函數(shù)指針數(shù)組的使用方法

文章出處:【微信號(hào):ZLG_zhiyuan,微信公眾號(hào):ZLG致遠(yuǎn)電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    立功手把手教你學(xué)嵌入式編程函數(shù)指針指針函數(shù)的應(yīng)用

    作者經(jīng)常聽嵌入式軟件開發(fā)者說,“我?guī)缀醪挥?b class='flag-5'>函數(shù)指針……”。言下之意,那些復(fù)雜的語法似乎毫無用處,而實(shí)際上很多人根本沒有認(rèn)識(shí)到其無窮的威力……本文將進(jìn)入程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)》函數(shù)
    的頭像 發(fā)表于 08-29 11:36 ?1.6w次閱讀

    立功教你學(xué)程序設(shè)計(jì)技術(shù):做好軟件模塊的分層設(shè)計(jì),回調(diào)函數(shù)這樣

    立功教授數(shù)年之心血之作《程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)》以及《面向AMetal框架與接口的編程(上)》,電子版已無償性分享到電子工程師與高校群體,在公眾號(hào)回復(fù)【
    的頭像 發(fā)表于 08-30 10:24 ?9456次閱讀

    立功教你學(xué)C語言編程教你數(shù)組是如何保存指針

    雖然數(shù)組指針數(shù)組存儲(chǔ)的都是數(shù)據(jù),但還是有細(xì)微的差別。數(shù)組存儲(chǔ)的是相同類型的字符或數(shù)值,而指針數(shù)組
    的頭像 發(fā)表于 08-31 10:09 ?6874次閱讀
    <b class='flag-5'>周</b><b class='flag-5'>立功</b><b class='flag-5'>教你</b><b class='flag-5'>學(xué)</b><b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>編程</b>:<b class='flag-5'>教你</b><b class='flag-5'>數(shù)組</b>是如何保存<b class='flag-5'>指針</b>的

    所有C語言數(shù)組指針的知識(shí)都在這里了!|立功手把手教你學(xué)C語言編程

    當(dāng)數(shù)組作為函數(shù)的參數(shù)時(shí),C語言函數(shù)的所有參數(shù)必須在函數(shù)內(nèi)部聲明。但是,由于在
    的頭像 發(fā)表于 09-01 09:28 ?8175次閱讀

    立功教你學(xué)程序設(shè)計(jì)結(jié)構(gòu)體:內(nèi)存對(duì)齊和基本數(shù)據(jù)類型

    我們知道,數(shù)組指針是相同類型有序數(shù)據(jù)的集合,但很多時(shí)候需要將不同類型的數(shù)據(jù)捆綁在一起作為一個(gè)整體來對(duì)待,使程序設(shè)計(jì)更方便。在C語言中,
    的頭像 發(fā)表于 09-01 13:47 ?7921次閱讀
    <b class='flag-5'>周</b><b class='flag-5'>立功</b><b class='flag-5'>教你</b><b class='flag-5'>學(xué)</b><b class='flag-5'>程序設(shè)計(jì)</b>結(jié)構(gòu)體:內(nèi)存對(duì)齊和基本數(shù)據(jù)類型

    立功手把手教你學(xué)C語言編程:用數(shù)組,構(gòu)造一個(gè)雙重指針

    第一章為程序設(shè)計(jì)基礎(chǔ),本文為1.8.3 指針數(shù)組中的第二要點(diǎn):字符串與指針指針、第三要點(diǎn): 字符串與二維
    的頭像 發(fā)表于 09-04 14:15 ?6573次閱讀

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

    我們知道,數(shù)組指針是相同類型有序數(shù)據(jù)的集合,但很多時(shí)候需要將不同類型的數(shù)據(jù)捆綁在一起作為一個(gè)整體來對(duì)待,使程序設(shè)計(jì)更方便。在C語言中,
    的頭像 發(fā)表于 09-06 09:27 ?9514次閱讀
    <b class='flag-5'>周</b><b class='flag-5'>立功</b><b class='flag-5'>教你</b><b class='flag-5'>學(xué)</b><b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>編程</b>:結(jié)構(gòu)體,使<b class='flag-5'>程序設(shè)計(jì)</b>更方便——內(nèi)置<b class='flag-5'>函數(shù)</b><b class='flag-5'>指針</b>和嵌套結(jié)構(gòu)體

    C語言數(shù)組名和指針

    指針C/C++語言的特色,而數(shù)組名與指針有太多的相似,甚至很多時(shí)候,
    發(fā)表于 08-27 17:48 ?676次閱讀

    新書創(chuàng)作談:立功教授數(shù)十年之心血力作《程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)》

    整理出《程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)》這本書,其內(nèi)容如同培訓(xùn)講師的教案,是立功和團(tuán)隊(duì)的讀書筆記和程序設(shè)計(jì)實(shí)踐的心得?!?b class='flag-5'>程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)》重點(diǎn)闡述了
    發(fā)表于 05-15 18:04

    【完整資料】《程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)》立功數(shù)十年心血力作

    ,是立功和團(tuán)隊(duì)的讀書筆記和程序設(shè)計(jì)實(shí)踐的心得。《程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)》重點(diǎn)闡述了三大方向內(nèi)容。C語言
    發(fā)表于 05-16 16:43

    C語言程序設(shè)計(jì)介紹

    包括:C 語言概述,算法基礎(chǔ),數(shù)據(jù)類型、運(yùn)算符與表達(dá)式,順序 結(jié)構(gòu)程序設(shè)計(jì),選擇結(jié)構(gòu)程序設(shè)計(jì),循環(huán)結(jié)構(gòu)程序設(shè)計(jì),
    發(fā)表于 02-17 15:49 ?0次下載

    C語言程序設(shè)計(jì)教程之二維數(shù)組如何應(yīng)用二維數(shù)組的資料概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語言程序設(shè)計(jì)教程之二維數(shù)組如何應(yīng)用二維數(shù)組的資料概述主要內(nèi)容包括了:1 了解二維
    發(fā)表于 10-26 16:48 ?3次下載

    C語言程序設(shè)計(jì)教程之指針使用的課件免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語言程序設(shè)計(jì)教程之指針使用的課件免費(fèi)下載指針使用主要內(nèi)容 地址與指針
    發(fā)表于 11-16 17:47 ?15次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>程序設(shè)計(jì)</b>教程之<b class='flag-5'>指針</b>使用的課件免費(fèi)下載

    理解函數(shù)指針、函數(shù)指針數(shù)組、函數(shù)指針數(shù)組指針

    理解函數(shù)指針函數(shù)指針數(shù)組、函數(shù)指針
    的頭像 發(fā)表于 06-29 15:38 ?1.5w次閱讀
    理解<b class='flag-5'>函數(shù)</b><b class='flag-5'>指針</b>、<b class='flag-5'>函數(shù)</b><b class='flag-5'>指針</b><b class='flag-5'>數(shù)組</b>、<b class='flag-5'>函數(shù)</b><b class='flag-5'>指針</b><b class='flag-5'>數(shù)組</b>的<b class='flag-5'>指針</b>

    為什么C語言函數(shù)不能返回數(shù)組?

    C語言函數(shù)可以返回指針、結(jié)構(gòu)體,為什么不能返回數(shù)組? 下面一步一步來分析: 1 函數(shù)不能返回
    的頭像 發(fā)表于 03-29 11:18 ?1904次閱讀