- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章 结构体.ppt
10.7.1 什么是共用体类型 有时需要使几种不同类型的变量存储到同一段内存单元中。例如可以把一个整型变量、一个字符型变量和一个浮点型变量放在同一个地址开始的内存单元中。以上三个变量在内存中所占的字节数不同,但都从同一地址开始存储。这种使几个不同的变量共占同一段内存的结构,称为“共用体”类型的结构。 声明共用体类型的一般形式为: union 共用体名 { 成员列表; }; 例如:union data { int i; char ch; float f; }; 10.7 共用体类型 共用体变量的定义和结构体变量的定义相似,例如: union data { int i; char ch; float f; }; union data ud; 当然也可以使用typedef语句: union data { int i; char ch; float f; }; typedef union data udata; udata ud; 10.7 共用体类型 10.7.2 共用体变量的引用方式 只能引用共用体变量中的成员,而不能引用共用体变量。例如,前面定义了共用体类型的变量ud,下面的引用方式是正确的: ud.i; ud.ch; printf(“%f”,ud.f); 10.7 共用体类型 10.7.3 共用体类型数据的特点 同一个内存段可以用来存储几种不同类型的成员,但在每一瞬时只能存储其中一种,而不是同时存储几种。 共用体变量中其作用的成员是最后一次存储的成员,再存入一个新的成员后原有的成员就失去作用。因此在使用共用体变量时应十分注意当前存储在共用体变量中的究竟是哪一个成员。 共用体变量的地址和它的各成员的起始地址都是同一地址。例如ud、ud.i、ud.ch和ud.f都表示同一起始地址。 ANSI C标准允许在两个类型相同的共用体变量之间进行相互赋值。 例如:udata ud1,ud2; ud1.i=5; ud2=ud1; printf(“%d”,ud.i); 输出的值为5. 10.7 共用体类型 如果一个变量只有几种可能的取值,则可以定义为枚举类型。所谓“枚举”是指变量的值一一列举出来,变量的取值只限于列举出来的值的范围之内。 声明枚举类型以关键字enum开头。例如: enum weekday {Monday,Tuesday,Wednesday,Thursday, Friday,Saturday,Sunday}; 以上语句声明了一个枚举类型enum weekday。然后可以使用此类型来定义变量。例如: enum weekday workday,weekend; 变量workday和weekend被定义为枚举变量,它们的取值只能是Monday到Sunday之一。例如: Weekend=Sunday; 枚举类型中的元素称为枚举元素或枚举常量,它们是用户自定义的标识符。 10.8 枚举类型 说明: C的编译器对枚举元素按常量处理,在定义时使他们的值从0开始递增。在上面的声明中,Monday的值为0,Tuesday的值为1,以此类推。例如: weekend=Sunday; printf(“%d”,weekend); 输出整数6。 也可以改变枚举元素的值,例如: enum weekday {Monday=1,Tuesday,Wednesday,Thursday, Friday,Saturday,Sunday}; 其中,Monday的值被定义为1,则Tuesday为2,以此类推。 枚举值可以用来做判断比较。例如: if(workday==Monday){…} if(workdaySaturday){…} 10.8 枚举类型 第10章 结构体 10.1 问题的提出 10.2 用typedef命名类型 10.3 结构体类型和结构体变量 10.4 结构体数组 10.5 结构体指针 10.6 用指针处理链表 10.7 共用体类型 10.8 枚举类型 10.1 问题的提出 在实际应用中,有时需要将不同类型的数据组合成一个有机的整体,以便于使用。 例
文档评论(0)