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

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

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

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

AGk5_ZLG_zhiyua ? 來源:未知 ? 作者:佚名 ? 2017-09-14 14:14 ? 次閱讀

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

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

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

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

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

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

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

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

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

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

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

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

那么*pCmdEntry=cmdArray[0],因為&和*是一對逆運算符,所以可以做以下替換:

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

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

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

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

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

程序清單2.26 控制臺菜單選項程序

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

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

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

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

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

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

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

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

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

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

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

    C++語言程序設(shè)計時如何控制語句?

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

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

    本文檔的主要內(nèi)容詳細(xì)介紹的是Visual Basic的控制結(jié)構(gòu)包括了:順序結(jié)構(gòu)程序設(shè)計,選擇結(jié)構(gòu)程序設(shè)計
    發(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è)計</b>資料免費下載

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

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

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

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

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

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

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

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

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

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

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

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

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

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