第5章结构、共用体和链表.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章结构、共用体和链表

第5章 结构、共用体和链表 在实际应用中,常常需要把类型不同的一系列数据存储在一起,例如要登记一个学生的信息,则需要记录他的姓名(C-string)、学号(整型或字符型)、年龄(整型)和身高体重(浮点型)等,前面介绍的数组无法完成这一任务,因为数组要求所有的元素属于同一类型。结构(struct)可以满足我们的要求,为了满足程序设计的需要,C++允许我们自己定义数据类型,称之为自定义数据类型,结构是自定义数据类型中的一种,它可将多种数据类型组合在一起使用。 共用体可以看成一种特殊的结构,与结构不同的地方在于它允许在系统内存的同一块区域保存不同类型的数据。将一个个的结构变量或共用体变量用指针联系起来,便形成了链表。正确使用结构、共用体和链表,才能写出高质量的C++程序。 5.1 结构 结构是比数组更为灵活的一种数据结构,从字面上看,结构看作一组变量,它们可以具有不同的数据类型,集合到一个整体中,这个整体就是结构,仍举存储学生信息这个例子,可以定义一个student结构,编译器将该结构看成一个整体,或者说一个类型,和int、double等一样,程序中可以声明student型的变量,该变量包含了一个学生的姓名、学号、年龄、身高和体重等一系列信息。使用结构,可以有效地实现相关信息的存储和管理。 5.1.1 如何定义一个结构 结构是用户定义的一种数据类型,定义了结构后,便可以通过声明创建这种类型的变量,因此,结构的使用有两个步骤:一是结构的定义,二是结构变量的声明。 我们可以采用如下形式定义一个student型的结构: struct student { char name[20]; int age; float weight; }; 5.1.2 结构变量的声明和使用 在程序中,可以像声明普通的int型变量一样声明一个结构变量,如: struct student A; 该语句声明了一个student型的变量A,在声明结构变量时,关键词struct可以省略,而直接写成“student A;”,这样,结构类型student的用法就和int、long等基本类型名相同,这说明,结构定义了一种新类型。 结构类型和结构变量是两个不同的概念,结构类型就象int、double等类型一样,是一种数据类型,编译器并不对它分配内存空间,只有声明了结构类型的变量时,才对该变量分配存储空间。 5.1.3 结构变量的初始化 在声明结构变量的同时,可以进行变量的初始化: student stu1={“Ronaldo”,30,70.5};或student stu1={{‘R’,’o’,’n’,’a’,’l’,’d’,’o’,’\0’},30,70.5}; 和数组一样,将用逗号分割的值列表用花括号括起来,以完成stu1的初始化。 事实上,可以将结构定义,变量声明和变量初始化放在一起来完成,见代码5?2。 5.1.4 结构变量间是否可以相互赋值 数组可以看成是一组相同类型数据的结合,而结构可以看作是一组不同类型数据构成的整体,在第3章中介绍到,除了可以对字符数组进行整体的输入输出外,C++一般不允许对数组进行整体的操作,必须通过元素遍历的方式实现对数组的整体操作,那么,结构变量间是否允许相互赋值呢,答案是肯定的。 可以使用赋值操作符(=)将一个结构变量B赋值给另一个结构变量A,这样,结构变量A中的每个成员都将被设置成结构变量B中相应成员的值,即使成员是数组类型也不例外,这种赋值方式被成为成员赋值,见代码5?3。 5.1.5 结构体变量的sizeof 一般来说,结构体变量占据的内存大小是所有成员变量占据内存大小之和,但有些例外需要特别注意,先看一个结构体: struct ExS1 { char c1; short s1; int i1; }; 从字面上来看,sizeof(ExS1)的结果似乎应该是1+2+4=7,但实际上,返回结果为8,这牵扯到字节对齐机制。 5.2 共用体 共用体(union)也称联合,可以看成一种特殊的结构。和结构一样,共用体可以包括多种数据类型,但在共用体中,各种数据类型在内存中占据同一地址,换句话说,在某个确定的时刻,共用体只能表示一种数据类型。和结构的使用方法一致,共用体的使用也分为共用体的定义、共用体变量的声明两个步骤。 5.2.1 共用体的定义 共用体可采用如下形式定义: union 共用体名称(或称标识) { 存储数据列表(或称成员变量列表) }; 注意,结束花括号后的分号(};)不要遗漏,这种定义形式是一个完整的C++语句。 举例来说,下列代码定义了computer共用体,根据此定义,便可以像创建结构变量那样创建computer类型的共用体变量。 union computer { char brand[10]; float p

文档评论(0)

sandaolingcrh + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档