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

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

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

多分支選擇結(jié)構(gòu)程序設(shè)計(jì)的思想與實(shí)現(xiàn)方法

AGk5_ZLG_zhiyua ? 來(lái)源:未知 ? 作者:佚名 ? 2017-09-14 14:14 ? 次閱讀

周立功教授數(shù)年之心血之作《程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)》以及《面向AMetal框架與接口編程(上)》。書(shū)本內(nèi)容公開(kāi)后,在電子行業(yè)掀起一片學(xué)習(xí)熱潮。經(jīng)周立功教授授權(quán),本公眾號(hào)特對(duì)《程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)》一書(shū)內(nèi)容進(jìn)行連載,愿共勉之。

第二章為程序設(shè)計(jì)技術(shù),本文為2.2.5 結(jié)構(gòu)體數(shù)組。

>>>2.2.5 結(jié)構(gòu)體數(shù)組

下面將以控制臺(tái)菜單選項(xiàng)為例,介紹多分支選擇結(jié)構(gòu)程序設(shè)計(jì)的思想與實(shí)現(xiàn)方法。一般來(lái)說(shuō),菜單欄至少包括新建文件、打開(kāi)文件、保存文件和退出4項(xiàng)基本功能。比如:

如果使用函數(shù)指針,這4個(gè)函數(shù)的調(diào)用形式如下:

而新建文件、打開(kāi)文件、保存文件和退出都可以作為字符串"新建文件"、"打開(kāi)文件"、"保存文件"和"退出"存儲(chǔ)在char數(shù)組中。比如:

基于此,可以先聲明一個(gè)結(jié)構(gòu)體類(lèi)型CmdEntry,其聲明如下:

接著定義一個(gè)結(jié)構(gòu)體數(shù)組作為函數(shù)表,分別用于存儲(chǔ)菜單函數(shù)的入口地址和菜單信息。其聲明如下:

在這里,將cmdArray聲明為一個(gè)內(nèi)含10個(gè)元素的數(shù)組,數(shù)組的每個(gè)元素都是一個(gè)CmdEntry類(lèi)型的數(shù)組,因此cmdArray[0]是第一個(gè)CmdEntry類(lèi)型的結(jié)構(gòu)體變量,cmdArray[1]是第2個(gè)CmdEntry類(lèi)型的結(jié)構(gòu)體變量,以此類(lèi)推。cmyArray是數(shù)組名,該數(shù)組中的每個(gè)元素都是CmdEntry類(lèi)型的結(jié)構(gòu)體變量。

為了標(biāo)識(shí)結(jié)構(gòu)體數(shù)組中的成員,可以采用訪(fǎng)問(wèn)單獨(dú)結(jié)構(gòu)體的規(guī)則:在結(jié)構(gòu)體名后面加一個(gè)點(diǎn)運(yùn)算符,再在點(diǎn)運(yùn)算符后面加上成員名。比如:

注意,數(shù)組下標(biāo)緊跟在cmyArray后面,不是成員名后面。比如:

使用cmdArray[2].cHelp的原因是:cmdArray[2]是結(jié)構(gòu)體變量名,正如cmdArray[1]是一個(gè)結(jié)構(gòu)體變量名。使用cmdArray[3].cHelp的原因是cmdArray[3]是結(jié)構(gòu)體變量名,如同cmdArray[0]是另一個(gè)變量名。由于數(shù)組變量名代表數(shù)組首元素的地址,因此下面兩個(gè)語(yǔ)句是等價(jià)的:

那么*pCmdEntry=cmdArray[0],因?yàn)?和*是一對(duì)逆運(yùn)算符,所以可以做以下替換:

由于.運(yùn)算符比*運(yùn)算符的優(yōu)先級(jí)高,因此必須使用圓括號(hào)。順帶提一下,下面的表達(dá)式代表什么?

這是cmdArray數(shù)組第1個(gè)結(jié)構(gòu)體變量(cmdArray[0]部分)中的第2個(gè)字符(cHelp[1]部分),這個(gè)字符為“建”。這個(gè)示例指出,點(diǎn)運(yùn)算符右側(cè)的下標(biāo)作用于各個(gè)成員,點(diǎn)運(yùn)算符左側(cè)的下標(biāo)作用于結(jié)構(gòu)體數(shù)組。最后總結(jié)一下:

根據(jù)上面的定義,即可用以下方式獲得相應(yīng)函數(shù)的入口地址。比如:

即pfuncmd函數(shù)指針指向CreateFile()函數(shù),其調(diào)用形式如下:

由此可見(jiàn),采用回調(diào)函數(shù)動(dòng)態(tài)綁定的方式,程序的可擴(kuò)展性得到了很大的提升。只需在“<標(biāo)注>1”處添加自定義的函數(shù),無(wú)需多處修改代碼,不僅可以很好地解決程序的可擴(kuò)展性問(wèn)題,而且還大大地降低程序的出錯(cuò)幾率,詳見(jiàn)程序清單2.26。

程序清單2.26 控制臺(tái)菜單選項(xiàng)程序

請(qǐng)用bubbleSort()算法完成這個(gè)練習(xí),將employeeArray結(jié)構(gòu)體數(shù)組分別按下列要求排序并輸出:(1)按id從小到大排序;(2)按weight、age、height從小到大排序,相同時(shí)按id從小到大排序;(3)bloodType按A、B、O、AB順序排序,相同時(shí)按id從小到大排序。

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

原文標(biāo)題:周立功:結(jié)構(gòu)體數(shù)組的應(yīng)用

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    選擇結(jié)構(gòu)程序設(shè)計(jì)

    選擇結(jié)構(gòu)程序設(shè)計(jì)要設(shè)計(jì)選擇結(jié)構(gòu)程序,要考慮兩個(gè)方面的問(wèn)題:一是在C語(yǔ)言中如何來(lái)表示條件,二是在C
    發(fā)表于 03-10 15:06

    結(jié)構(gòu)化匯編語(yǔ)言的監(jiān)控程序設(shè)計(jì)思想

    微型計(jì)算機(jī)控制技術(shù)_第五章第5章 常用應(yīng)用程序設(shè)計(jì) 本章以51單片機(jī)為基礎(chǔ),主要介紹結(jié)構(gòu)化匯編語(yǔ)言的監(jiān)控程序設(shè)計(jì)思想和實(shí)時(shí)測(cè)控系統(tǒng)中最常用的數(shù)字濾波技術(shù)、標(biāo)度變換、插值算法以及報(bào)警
    發(fā)表于 09-10 06:50

    選擇結(jié)構(gòu)程序設(shè)計(jì)

    實(shí)驗(yàn)  選擇結(jié)構(gòu)程序設(shè)計(jì) 一、實(shí)驗(yàn)?zāi)康?1)掌握邏輯表達(dá)式的正確書(shū)寫(xiě)形式。(2)學(xué)會(huì)單分支和雙分支
    發(fā)表于 09-23 19:27 ?2072次閱讀

    匯編語(yǔ)言學(xué)習(xí)課件_程序基本結(jié)構(gòu)及其程序設(shè)計(jì)

    第五章 程序基本結(jié)構(gòu)及其程序設(shè)計(jì) 5.1 順序結(jié)構(gòu)及簡(jiǎn)單程序設(shè)計(jì) 5.2 分支
    發(fā)表于 12-31 10:41 ?0次下載

    關(guān)于分支及循環(huán)結(jié)構(gòu)程序設(shè)計(jì)實(shí)驗(yàn)資料.ppt下載

    關(guān)于分支及循環(huán)結(jié)構(gòu)程序設(shè)計(jì)實(shí)驗(yàn)資料
    發(fā)表于 04-17 17:53 ?2次下載

    C語(yǔ)言教程之選擇結(jié)構(gòu)程序設(shè)計(jì)資料概述和設(shè)計(jì)實(shí)例免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語(yǔ)言教程之選擇結(jié)構(gòu)程序設(shè)計(jì)資料概述和設(shè)計(jì)實(shí)例免費(fèi)下載包括了:1.if條件分支結(jié)構(gòu)2.switch-case開(kāi)關(guān)
    發(fā)表于 09-19 17:21 ?8次下載
    C語(yǔ)言教程之<b class='flag-5'>選擇</b><b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>程序設(shè)計(jì)</b>資料概述和設(shè)計(jì)實(shí)例免費(fèi)下載

    C++語(yǔ)言程序設(shè)計(jì)時(shí)如何控制語(yǔ)句?

    本文檔的主要內(nèi)容詳細(xì)介紹的是C++語(yǔ)言程序設(shè)計(jì)時(shí)如何控制語(yǔ)句?內(nèi)容包括了1 C++語(yǔ)句概述2 if語(yǔ)句實(shí)現(xiàn)選擇結(jié)構(gòu)3 switch語(yǔ)句實(shí)現(xiàn)
    發(fā)表于 09-20 14:51 ?2次下載
    C++語(yǔ)言<b class='flag-5'>程序設(shè)計(jì)</b>時(shí)如何控制語(yǔ)句?

    Visual Basic教程之順序,選擇,循環(huán)結(jié)構(gòu)程序設(shè)計(jì)資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是Visual Basic的控制結(jié)構(gòu)包括了:順序結(jié)構(gòu)程序設(shè)計(jì),選擇結(jié)構(gòu)程序設(shè)計(jì)
    發(fā)表于 10-12 16:44 ?3次下載
    Visual Basic教程之順序,<b class='flag-5'>選擇</b>,循環(huán)<b class='flag-5'>結(jié)構(gòu)</b>的<b class='flag-5'>程序設(shè)計(jì)</b>資料免費(fèi)下載

    C語(yǔ)言程序設(shè)計(jì)實(shí)用教程之如何選擇結(jié)構(gòu)程序設(shè)計(jì)

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語(yǔ)言程序設(shè)計(jì)實(shí)用教程之如何選擇結(jié)構(gòu)程序設(shè)計(jì):1 關(guān)系運(yùn)算符和關(guān)系表達(dá)式 2 邏輯運(yùn)算符邏輯表達(dá)式 3 if語(yǔ)句 4 switch語(yǔ)句 5
    發(fā)表于 10-31 18:04 ?6次下載
    C語(yǔ)言<b class='flag-5'>程序設(shè)計(jì)</b>實(shí)用教程之如何<b class='flag-5'>選擇</b><b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>程序設(shè)計(jì)</b>

    C語(yǔ)言程序設(shè)計(jì)教程之分支結(jié)構(gòu)程序設(shè)計(jì)的課件免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語(yǔ)言程序設(shè)計(jì)教程之分支結(jié)構(gòu)程序設(shè)計(jì)的課件免費(fèi)下載。
    發(fā)表于 12-10 17:16 ?6次下載
    C語(yǔ)言<b class='flag-5'>程序設(shè)計(jì)</b>教程之<b class='flag-5'>分支</b><b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>程序設(shè)計(jì)</b>的課件免費(fèi)下載

    C語(yǔ)言程序設(shè)計(jì)教程之選擇結(jié)構(gòu)程序設(shè)計(jì)的資料說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語(yǔ)言程序設(shè)計(jì)教程之選擇結(jié)構(gòu)程序設(shè)計(jì)的資料說(shuō)明。
    發(fā)表于 02-21 14:26 ?4次下載
    C語(yǔ)言<b class='flag-5'>程序設(shè)計(jì)</b>教程之<b class='flag-5'>選擇</b><b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>程序設(shè)計(jì)</b>的資料說(shuō)明

    C++程序設(shè)計(jì)教程之程序設(shè)計(jì)初步資料說(shuō)明

    ,6. 關(guān)系運(yùn)算和邏輯運(yùn)算,7. 選擇結(jié)構(gòu)和IF語(yǔ)句,8. 條件運(yùn)算符和條件表達(dá)式,9. 多分支選擇結(jié)構(gòu)和switch語(yǔ)句,10. 編寫(xiě)
    發(fā)表于 03-14 14:48 ?7次下載
    C++<b class='flag-5'>程序設(shè)計(jì)</b>教程之<b class='flag-5'>程序設(shè)計(jì)</b>初步資料說(shuō)明

    C語(yǔ)言的switch case多分支選擇語(yǔ)句的詳細(xì)資料說(shuō)明

    1、switch-case開(kāi)關(guān)語(yǔ)句是一種多分支選擇語(yǔ)句,用來(lái)實(shí)現(xiàn)多方向條件分支。雖然采用if-else條件判斷語(yǔ)句也可以實(shí)現(xiàn)多方向條件
    發(fā)表于 07-12 17:39 ?1次下載
    C語(yǔ)言的switch case<b class='flag-5'>多分支</b><b class='flag-5'>選擇</b>語(yǔ)句的詳細(xì)資料說(shuō)明

    C語(yǔ)言程序設(shè)計(jì)第四講結(jié)構(gòu)程序設(shè)計(jì)選擇

    C語(yǔ)言程序設(shè)計(jì)第四講結(jié)構(gòu)程序設(shè)計(jì)選擇
    發(fā)表于 12-22 10:34 ?0次下載

    C程序設(shè)計(jì)基礎(chǔ)-分支結(jié)構(gòu)

    分支結(jié)構(gòu)簡(jiǎn)單說(shuō)就是條件,利用人為或者程序來(lái)選擇運(yùn)行某一段程序,下面采用一個(gè)例子來(lái)描述這種結(jié)構(gòu)
    的頭像 發(fā)表于 03-02 10:06 ?727次閱讀
    C<b class='flag-5'>程序設(shè)計(jì)</b>基礎(chǔ)-<b class='flag-5'>分支</b><b class='flag-5'>結(jié)構(gòu)</b>