C语言程序设计 易晓梅 赵芸 第9章 结构体共用体枚举新.pptVIP

C语言程序设计 易晓梅 赵芸 第9章 结构体共用体枚举新.ppt

  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文档。上传文档
查看更多
链表的插入操作就是将给定结点插入到指定链表的适当位置。这里需要考虑3种情况: (1)若原链表为空表,则新结点p就作为首结点,让head指向新结点p,并设置新结点的next域为空。 9.5.5 链表的插入 * (2)若原链表不为空,而新结点p应插入在首结点前,则让新结点的next域指向原来的首结点(p-next=head),并设置head指向新结点(head=p),如图所示。 9.5.5 链表的插入 * (3)若原链表不为空,而新结点插入位置在链表的中间,则将新结点p的next域指向插入点的后一结点(p-next=p1-next),并设置前一结点的next域指向新结点(p1-next=p);这种情况包含了新结点插入位置在链表末尾的情况,如图所示。 9.5.5 链表的插入 * 【例9.9】在例9.7中已排好序的链表中添加插班的学生信息结点,这里只给出insertnode()函数代码。 见教材218页 9.5.5 链表的插入 * 共用体(union)是将不同的数据类型组合在一起,共同占有同一段内存的用户自定义数据类型。例如: union number { int x; float y; }num; 9.6 共 用 体 * 这里声明了共用体类型number,包含两个成员整型的x和单精度浮点型的y,两个成员共同占有同一段内存 。 共用体所占内存空间的大小由其所包含的最大长度成员所占的空间数决定,上面的共用体变量num所占的空间是max(2,4)=4字节,num变量的内存分配如图 所示。 根据共用体的定义,两个成员共同占有同一段内存,可能会有以下4个问题: int和float类型所占内存字节数不相同,不同长度的内存空间如何共用? 共用体的内存长度是多少?与结构体所占的内存空间长度有何不同? 分别对共用体的成员进行操作,会引起内存怎么样的变化? 该在何种情况下使用共用体? 9.6 共 用 体 * C语言规定,共用体采用与开始地址对齐的方式分配地址空间。如共用体num变量的成员y的前两个字节也就是成员x的内存空间。共用体在同一时刻只有一个成员是有意义的,即共用体的成员具有唯一性,不能同时为共用体的成员进行赋值操作。共用体用来使相关变量共享空间,节省了内存空间。 9.6 共 用 体 * 共用体还可以避免逻辑上的冲突。 例如,在谈到某个人的婚姻状况时,一般有三种可能:未婚、已婚、离婚。 任何一个人在同一时刻只能有一种状态存在。 当他是未婚时,只需要知道他的状态即可; 如果是已婚,则还需要了解其配偶的姓名; 如果是离婚,就需要知道离婚日期。 可以用图形表示三者的状态,如图9-17所示。 9.6 共 用 体 * 可用共用体类型声明,当某人的婚姻状况发生改变时,原来的状况自动被覆盖,不会发生逻辑冲突。共用体的定义如下: struct person { int marryflag; union { int single; char spousename[20]; struct date divorcedday; }married; }; 9.6 共 用 体 * 结构体类型person包含两个成员,整型marryflag是表示婚姻状况的标志。 共用体型married成员表示三种婚姻状况该取的值。我们定义: marryflag==1时,共用体中存储的是没结婚的标志; marryflag==2时,共用体中存储的是配偶姓名; marryflag==3时,共用体中存储的是离婚日期。 在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期只有七天,一年只有十二个月,一个班每周有六门课程等。如果把这些量说明为整型,字符型或其他类型显然是不妥当的。为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型。 9.7 枚 举 类 型 * 1.枚举类型定义的一般形式 enum 枚举名{枚举值表}; 例如,定义一个枚举类型代表一周的七天: enum weekday { monday,tuesday,wednesday,thursday,friday, saturday,sunday}; 该枚举名为weekday,枚举值共有7个,即一周中的七天。凡被说明为weekday类型变量的取值只能是七天中的某一天。 9.7.1 枚举类型的定义和枚举变量的说明 * 【注意】 每个枚举常量对应一

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档