- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第10章 共用体与枚举 学习目标 理解共用体概念以及在编程中的作用 掌握结构体类型和共用体类型的差别 理解枚举概念以及在编程中的作用 掌握使用typedef定义新类型的方法及作用 10.1共用体 10.1.1 共用体概念 【例】教师和学生填表问题 如要求“班级”和“教研室”这两种类型不同的数据都填入“单位”这个变量中, 就必须把“单位”定义为包含整型和字符型数组这两种类型的“共用体”,如下: union perdata { int class; char office[10]; }; 1、共用体类型定义 union 共用体名 { 类型说明符 成员名1; 类型说明符 成员名2; ……. 类型说明符 成员名n; }; 第2种: union perdata { int class; char office[10]; }a,b; 2、共用体变量的声明 说明 共用体变量和结构体变量含义不同: 结构体变量所占内存长度是各成员的内存长度之和 共用体变量所占内存长度是最长成员的长度。 如perdata类型的变量a和b都为10个字节,即office数组的长度。a,b变量如赋整型数据时,只使用了2个字节,而赋字符数组时,可用10个字节。 3、共用体的引用 先定义共用体变量后才可以引用它。不能引用共用体变量本身,只能引用其中的成员。 例如:printf(″%d″,a);是错误的 printf(″%d″,a.class);是正确的 4.共用体类型特点 (1)同一内存段可放几种不同类型的成员,但每一瞬间只能存放一种。 例: union data { int i; char ch; float f; }a,b,c; a.i=1; a.c=′a′; a.f=2.1; printf(″%f″,a.f);是可以的。 printf(″%c″,a.c);无效 (2)共用体变量地址及其各成员地址都是同一地址。即a,a.i,a.c,a.f值相同。 (3)不能对共用体变量名赋值。也不能定义时进行初始化。 (4)不能把共用体变量作为函数参数,也不能使函数返回共同体变量,但可以使用指向共用体的指针。 (5)允许定义共用体数组。 10.1.2 人员管理 【例10-1】 设有一个教师与学生通用的表格,教师数据有姓名,年龄,职业,教研室四项。学生有姓名,年龄,职业,班级四项。编程输入人员数据, 再以表格输出。 10.2 枚举 10.2.1 枚举概念 1.枚举类型的定义 2.枚举变量的声明 先定义,后声明 enum weekday { ..... }; enum weekday a,b,c; 或者为: enum weekday 10.2.2枚举类型应用 【例10-2】星期枚举类型定义 #include stdio.h enum weekday { sun,mon,tue,wed,thu,fri,sat } a,b,c; main() { a=sun; b=mon; c=tue; printf(%d,%d,%d\n,a,b,c); } 10.2.3 星期几的计算 【例10-3】 编写程序,要求输入当天是星期几,就可以计算并输出n天后是星期几。例如,今天是星期六,若求3天后是星期几,则输入6,3,即输出“3天后是星期2”。 源程序如下: 枚举类型在使用中有以下规定 1. 枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。例如对枚举weekday的元素再作以下赋值: sun=5;mon=2;sun=mon; 都是错误的。 2. 枚举元素值从0 开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1,…,sat值为6。 3. 只能把枚举值赋予枚举变量,不能把整型数值直接赋予枚举变量。如: a=sum;b=mon; 是正确的。而: a=0;b=1; 是错误的。如一定要把数值赋予枚举变量,则必须用强制类型转换,如: a=(enum weekday)2;其意义是将顺序号为2的枚举元素赋予枚举变量a,相当于: a=tue; 还应该说明的是枚举元素不是字符常量也不是字符串常量, 使用时不要加单、双引号。 10.3 用typedef定义类型 【例】 定义变量a,b: int a,b; 采用如下方法定义: typedef int INTEGER INTEGER a,b; 两种方法完全等效 定义一个新的类型名 typedef定义的一般形式为: typedef 原类型名 新类型名 例:定义结构体类型 typedef struct stu { char name[20];
您可能关注的文档
最近下载
- BS EN 12350-5-2019 新鲜混凝土试验.第5部分:流动表试验.pdf VIP
- BS EN 12350-4-2019 新鲜混凝土试验.第4部分:密实度.pdf VIP
- BS EN 12350-5-2019 Testing fresh concrete Part 5:Flow table test 新拌混凝土试验第5部分: 流动台试验.pdf
- 颈动脉支架成形术治疗颈动脉狭窄病人的护理.pdf VIP
- 重庆文理学院,校考,中国现当代作家作品选复习题1.doc VIP
- 重庆文理学院,校考,中国现当代作家作品选复习题2.doc VIP
- BS EN 12350-6-2019 Testing fresh concrete Part 6:Density 新浇混凝土试验第6部分: 密度.pdf
- 交叉配血标本采集流程.pptx VIP
- BS EN 12350-2-2019 新鲜混凝土试验.第2部分:塌陷试验.pdf VIP
- 2025年大学校园二手市场调研报告.docx VIP
原创力文档


文档评论(0)