0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

多分支选择结构程序设计的思想与实现方法

AGk5_ZLG_zhiyua 来源:未知 作者:佚名 2017-09-14 14:14 次阅读

周立功教授数年之心血之作《程序设计与数据结构》以及《面向AMetal框架与接口编程(上)》。书本内容公开后,在电子行业掀起一片学习热潮。经周立功教授授权,本公众号特对《程序设计与数据结构》一书内容进行连载,愿共勉之。

第二章为程序设计技术,本文为2.2.5 结构体数组。

>>>2.2.5 结构体数组

下面将以控制台菜单选项为例,介绍多分支选择结构程序设计的思想与实现方法。一般来说,菜单栏至少包括新建文件、打开文件、保存文件和退出4项基本功能。比如:

如果使用函数指针,这4个函数的调用形式如下:

而新建文件、打开文件、保存文件和退出都可以作为字符串"新建文件"、"打开文件"、"保存文件"和"退出"存储在char数组中。比如:

基于此,可以先声明一个结构体类型CmdEntry,其声明如下:

接着定义一个结构体数组作为函数表,分别用于存储菜单函数的入口地址和菜单信息。其声明如下:

在这里,将cmdArray声明为一个内含10个元素的数组,数组的每个元素都是一个CmdEntry类型的数组,因此cmdArray[0]是第一个CmdEntry类型的结构体变量,cmdArray[1]是第2个CmdEntry类型的结构体变量,以此类推。cmyArray是数组名,该数组中的每个元素都是CmdEntry类型的结构体变量。

为了标识结构体数组中的成员,可以采用访问单独结构体的规则:在结构体名后面加一个点运算符,再在点运算符后面加上成员名。比如:

注意,数组下标紧跟在cmyArray后面,不是成员名后面。比如:

使用cmdArray[2].cHelp的原因是:cmdArray[2]是结构体变量名,正如cmdArray[1]是一个结构体变量名。使用cmdArray[3].cHelp的原因是cmdArray[3]是结构体变量名,如同cmdArray[0]是另一个变量名。由于数组变量名代表数组首元素的地址,因此下面两个语句是等价的:

那么*pCmdEntry=cmdArray[0],因为&和*是一对逆运算符,所以可以做以下替换:

由于.运算符比*运算符的优先级高,因此必须使用圆括号。顺带提一下,下面的表达式代表什么?

这是cmdArray数组第1个结构体变量(cmdArray[0]部分)中的第2个字符(cHelp[1]部分),这个字符为“建”。这个示例指出,点运算符右侧的下标作用于各个成员,点运算符左侧的下标作用于结构体数组。最后总结一下:

根据上面的定义,即可用以下方式获得相应函数的入口地址。比如:

即pfuncmd函数指针指向CreateFile()函数,其调用形式如下:

由此可见,采用回调函数动态绑定的方式,程序的可扩展性得到了很大的提升。只需在“<标注>1”处添加自定义的函数,无需多处修改代码,不仅可以很好地解决程序的可扩展性问题,而且还大大地降低程序的出错几率,详见程序清单2.26。

程序清单2.26 控制台菜单选项程序

请用bubbleSort()算法完成这个练习,将employeeArray结构体数组分别按下列要求排序并输出:(1)按id从小到大排序;(2)按weight、age、height从小到大排序,相同时按id从小到大排序;(3)bloodType按A、B、O、AB顺序排序,相同时按id从小到大排序。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

原文标题:周立功:结构体数组的应用

文章出处:【微信号:ZLG_zhiyuan,微信公众号:ZLG致远电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    选择结构程序设计

    选择结构程序设计要设计选择结构程序,要考虑两个方面的问题:一是在C语言中如何来表示条件,二是在C
    发表于 03-10 15:06

    结构化汇编语言的监控程序设计思想

    微型计算机控制技术_第五章第5章 常用应用程序设计 本章以51单片机为基础,主要介绍结构化汇编语言的监控程序设计思想和实时测控系统中最常用的数字滤波技术、标度变换、插值算法以及报警
    发表于 09-10 06:50

    选择结构程序设计

    实验  选择结构程序设计 一、实验目的(1)掌握逻辑表达式的正确书写形式。(2)学会单分支和双分支
    发表于 09-23 19:27 1995次阅读

    汇编语言学习课件_程序基本结构及其程序设计

    第五章 程序基本结构及其程序设计 5.1 顺序结构及简单程序设计 5.2 分支
    发表于 12-31 10:41 0次下载

    关于分支及循环结构程序设计实验资料.ppt下载

    关于分支及循环结构程序设计实验资料
    发表于 04-17 17:53 2次下载

    C语言教程之选择结构程序设计资料概述和设计实例免费下载

    本文档的主要内容详细介绍的是C语言教程之选择结构程序设计资料概述和设计实例免费下载包括了:1.if条件分支结构2.switch-case开关
    发表于 09-19 17:21 8次下载
    C语言教程之<b class='flag-5'>选择</b><b class='flag-5'>结构</b><b class='flag-5'>程序设计</b>资料概述和设计实例免费下载

    C++语言程序设计时如何控制语句?

    本文档的主要内容详细介绍的是C++语言程序设计时如何控制语句?内容包括了1 C++语句概述2 if语句实现选择结构3 switch语句实现
    发表于 09-20 14:51 2次下载
    C++语言<b class='flag-5'>程序设计</b>时如何控制语句?

    C语言程序设计实用教程之如何选择结构程序设计

    本文档的主要内容详细介绍的是C语言程序设计实用教程之如何选择结构程序设计:1 关系运算符和关系表达式 2 逻辑运算符逻辑表达式 3 if语句 4 switch语句 5
    发表于 10-31 18:04 6次下载
    C语言<b class='flag-5'>程序设计</b>实用教程之如何<b class='flag-5'>选择</b><b class='flag-5'>结构</b><b class='flag-5'>程序设计</b>

    C语言程序设计教程之分支结构程序设计的课件免费下载

    本文档的主要内容详细介绍的是C语言程序设计教程之分支结构程序设计的课件免费下载。
    发表于 12-10 17:16 6次下载
    C语言<b class='flag-5'>程序设计</b>教程之<b class='flag-5'>分支</b><b class='flag-5'>结构</b><b class='flag-5'>程序设计</b>的课件免费下载

    C语言程序设计教程之选择结构程序设计的资料说明

    本文档的主要内容详细介绍的是C语言程序设计教程之选择结构程序设计的资料说明。
    发表于 02-21 14:26 4次下载
    C语言<b class='flag-5'>程序设计</b>教程之<b class='flag-5'>选择</b><b class='flag-5'>结构</b><b class='flag-5'>程序设计</b>的资料说明

    C++程序设计教程之程序设计初步资料说明

    ,6. 关系运算和逻辑运算,7. 选择结构和IF语句,8. 条件运算符和条件表达式,9. 多分支选择结构和switch语句,10. 编写
    发表于 03-14 14:48 7次下载
    C++<b class='flag-5'>程序设计</b>教程之<b class='flag-5'>程序设计</b>初步资料说明

    C语言的switch case多分支选择语句的详细资料说明

    1、switch-case开关语句是一种多分支选择语句,用来实现多方向条件分支。虽然采用if-else条件判断语句也可以实现多方向条件
    发表于 07-12 17:39 1次下载
    C语言的switch case<b class='flag-5'>多分支</b><b class='flag-5'>选择</b>语句的详细资料说明

    C语言程序设计第四讲结构程序设计选择

    C语言程序设计第四讲结构程序设计选择
    发表于 12-22 10:34 0次下载

    C程序设计基础-分支结构

    分支结构简单说就是条件,利用人为或者程序选择运行某一段程序,下面采用一个例子来描述这种结构
    的头像 发表于 03-02 10:06 528次阅读
    C<b class='flag-5'>程序设计</b>基础-<b class='flag-5'>分支</b><b class='flag-5'>结构</b>

    C程序设计入门笔记之分支结构

    分支结构简单说就是条件,利用人为或者程序选择运行某一段程序,下面采用一个例子来描述这种结构
    的头像 发表于 03-02 10:08 528次阅读
    C<b class='flag-5'>程序设计</b>入门笔记之<b class='flag-5'>分支</b><b class='flag-5'>结构</b>