文/Edward首先先思考一个问题,假设某一天你去了一家策划公司,接到了一个策划需求,比如为新上市的某款手机写一个市场推广的文案,并且在电脑上面打印出来。那么在写这个文案的时候,你肯定是会需要着重地去介绍这款手机的一些信息的,比如:手机品牌:pear,型号:13mini,机身长度:150.9mm,机身宽度:75.7mm,机身厚度:8.3mm,屏幕尺寸6.1英寸,定价5899.00等等这系列信息。要实现这一个程序非常简单,只需要去将这些变量定义好,定义完成之后再去打印在电脑屏幕上即可,如图1所示。图1 定义变量去描述手机参数这个程序非常简单就能实现了,也非常顺利就可以打印出手机主要的介绍信息。那么第二个问题来了,假设这家公司现在也学会了营销,一次发布会会发布多款手机,这些手机分别被命名为13mini,13,13Max,13 MaxPlus,并且在一张海报上将这些手机所有维度的参数信息打印出来,就如图1一样,那么此时该如何处理呢?最简单的办法就是分别给每个手机的手机品牌,型号,机身长度,机身宽度,机身厚度,屏幕尺寸,定价等等这系列信息定义一个变量,如型号这个信息,Pear 13可以定义为Pear13_model,Pear13 mini可以定义为Pear13Mini_model,以此类推。试想一下,每个手机我们所展现出来的信息有7个,那么4个配置的手机一共要定义28个不同的变量。这么多的变量对于程序设计来说是不友好的,因为太多的独立的变量会让程序看上去非常杂乱,甚至编程者自己到最后都搞不清楚这些变量的意思了。我们再仔细观察这些变量,其实每一个手机的变量都是固定的,就是手机品牌,型号,机身长度,机身宽度,机身厚度,屏幕尺寸,定价这七个维度的信息。那么我们是否可以将这七个信息组合成一个集合,每次增加描述新手机变量的时候,我们只需要增加一个集合,就可以同时将这七个维度的信息全都描述出来?这种想法显然是合理的,在C语言中,这种由多个基本变量组成的集合式的复合变量叫做结构体。当然这个定义还需要再补充一点,一个结构体也可以包含另一个结构体。结构体在C语言中使用关键词“struct“进行定义,其定义方式有两种。第一种方式是在定义结构体类型的时候同时定义结构体变量,其形式为:struct 结构体标签{     数据类型 成员变量名;     数据类型 成员变量名……} 结构体变量名;第二种方式是先定义结构体类型,再定义结构体变量,其形式为:structstruct 结构体标签{     数据类型 成员变量名;     数据类型 成员变量名……};//定义结构体类型struct 结构体标签 结构体变量1, 结构体变量2……;当使用第一种方式时,结构体标签可以省略。很多读者在第一次接触结构体的时候,可能经常会搞不明白这里的结构体标签,结构体变量名,结构体成员之间是什么关系。我们可以举一个很形象的例子来解释一下。人的思维具有一个很强大的功能,这就是概括性或者说是归一性,表现出一点就是每个人都非常善于找规律从而对一些客观事物的特点进行总结。比如当你描述小丽外表的时候,你会说“她有着大大的眼睛,乌溜溜的眼珠,亚麻色的长发,月光般白皙的皮肤,高挺的鼻梁,樱桃小嘴“等,其实你以这种方式描述的时候,就已经将一个人眼睛,眼珠,头发,皮肤,鼻梁,嘴巴等几个方面的信息抽象出来了,而每个人都有这些信息,这里的这些信息在结构体中就相当于它的成员变量。而这些信息都是包含在”人“这个标签中的,因此”人“这个标签就类似于结构体中的结构体标签。最后你描述的对象小丽,在这里就类似于具体的结构体变量名,当然你可以用同样的信息去描述另一个人,比如小月。言归正传,如何用结构体变量来实现上述手机信息的描述呢?首先,我们先定义一个结构体标签,接着用这个标签去定义四个具体手机的描述信息。这个结构体标签里面应该包含手机品牌,型号,机身长度,机身宽度,机身厚度,屏幕尺寸,定价这七个成员变量。这个结构体标签可以写成:

struct Mobilephone{char *brand;char *model;float length;float width;float thickness;float screen_size;float price ;};

接着,使用这个结构体标签分别去定义4个具体手机的描述信息,即定义四个结构体变量。

Mobilephone Pear13MiniInfo, Pear13Info, Pear13MaxInfo,Pear13MaxPlusInfo;

这些结构体变量定义好了之后,我们就可以像使用普通变量一样去使用他们了。使用的时候使用小数点“.“去获取每个结构体变量中的成员变量,如要对Pear13MiniInfo中的brand变量赋值时,只需要使用Pear13MiniInfo. brand=”Pear”即可。因此上述的程序可以写成如图2所示。图2 结构体变量的使用

c++结构体定义和使用_【C语言更新】结构体的定义及使用相关推荐

  1. c语言嵌套结构体生日,第09天C语言(17):结构体嵌套

    #pragma mark 结构体嵌套 ###pragma mark 概念 ###pragma mark 代码 #include int main() { #warning 结构体嵌套 /* // st ...

  2. c语言 结构体 ppt,第8章C语言的结构体和共同体.ppt

    <第8章C语言的结构体和共同体.ppt>由会员分享,可在线阅读,更多相关<第8章C语言的结构体和共同体.ppt(41页珍藏版)>请在皮匠网上搜索. 1.1第八章结构体.共用体和 ...

  3. c++结构体定义和使用_[day day go]结构体amp;给结构定义方法

    结构体 //定义 type treeNode struct {value intleft, right *treeNode }//工厂函数创建 func createNode(value int) * ...

  4. java结构体构建学生 学号_易错题: 程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。...

    根据网考网考试中心的统计分析,以下试题在2015-12-7日计算机二级考试C语言习题练习中,答错率较高,为:93% [填空题] 程序通过定义学生结构体变量,存储了学生的学号.姓名和3门课的成绩.所有学 ...

  5. IAR在写结构体时不提示_书法要讲结构——新版本的瑕疵6

    书法要讲结构--新版本的瑕疵6 说明 此瑕疵只是疑似--或许"不". 书法 部编版小学语文教材2019学年六年级上册34页"书写提示": 浅析 课本中两个&qu ...

  6. c语言结构体编辑学生成绩管理,C语言基于结构体的学生信息管理系统实现

    宋福英 摘  要: 中国高校为保证学生信息安全,各分院的学生信息都在一个相对封闭的闭环内共享.中国高校在校生人数逐年递增,给高校的信息管理带来不小压力.C语言兼具高级语言和汇编语言的特点,简洁.紧凑. ...

  7. vue中data定义数字类型_[乐意黎原创] Vue中data定义的三种方式和区别

    在 Vue中,定义data时,经常有好几种写法,一不小心会混淆,这里彻底详述一下,以便记分清 . 一.在vue中,定义data可以有三种写法. 1. 第一种写法,data是一个对象. var app ...

  8. python分支结构使用if保留字吗_关于Python分支结构,以下选项中描述不正确的是...

    [单选题]这次( )很顺利,大家都很高兴. [单选题]下列哪项一般不是虚寒证的病理变化? [单选题]下列哪项不属虚寒证的表现? [其它]按照如下图所示,完成下列导航菜单设置,并上传文件. [单选题]下 ...

  9. python定义一个列表_如何在Python中创建用户定义的列表?

    你需要将怪物的数量发送给使用它的函数:def welcome(): number = monsters() print('Alright, ' + str(number) + ' monsters.' ...

  10. python定义数组大小_请问在python数组要先定义长度吗?

    视情况而定 若数组是追加一个元素的可以不用定义长度: 若初始化一个列表然后要修改其中的值的话,就要定义长度了. 例: 拓展资料 设计定位 Python的设计哲学是"优雅".&quo ...

最新文章

  1. 中小企业对于云计算的3大误解
  2. 消费者行为模型_市场调查消费者行为研究模型
  3. Linux 进程通信fifo,Linux 进程通信之FIFO的实现
  4. Linux下命令行安装weblogic10.3.6
  5. Spring.NET学习笔记10——方法的注入(基础篇) Level 200
  6. iPhone 13的新对手?小米历史上最好看的手机即将发布
  7. 《消费者报告》下调特斯拉Model 3安全评级
  8. 【网络信息安全】网络信息安全概述
  9. nmap隐藏自己扫描
  10. pbs 作业管理命令
  11. PMP课程笔记:第7章 项目成本管理
  12. 超越竞争对手的秘密武器-技术重用
  13. pyhton爬取广州链家租房信息,并用tableau进行数据分析
  14. GIS坐标系:epsg 3857 vs 4326
  15. 软件工程专业和网络工程专业的区别
  16. 研究私域玩法?你可以试试拼团模式
  17. 教育教学微课题研究方案——实习调研论文
  18. Delphi对象克隆技术
  19. 云脉文档管理小程序轻松解决文档管理难题
  20. Windows系统设置多账户步骤

热门文章

  1. colMedians(x) : Argument ‘x’ must be a matrix、rowMedians(data) : Argument ‘x‘ must be a matrix.
  2. R计算数组的累计加和(Cumulative Sums)
  3. 自然语言处理NLP之文本摘要、机器翻译、OCR、信息检索、信息抽取、校对纠错
  4. 物体检测之从RCNN到Faster RCNN
  5. JFinal Nutz
  6. 基因组关联分析中的交互作用研究
  7. android 悬停按钮,Android悬浮按钮的使用方法
  8. linux关机 hibernate,Linux关机命令
  9. 行人属性--HydraPlus-Net: Attentive Deep Features for Pedestrian Analysis
  10. Python-PyCharm 报错解决:ImportError: cannot import name 'InteractiveConsole' from 'code'