- 1、本文档共102页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序设计第7章自义数据类型
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1、不能引用共用体变量, 而只能引用共用体变量中的成员。 例:正确引用 a.i a.ch a.f couta.i; 2、不能只引用共用体变量。 例:错误引用 couta; 7.2.2 对共用体变量的访问方式 1)使用共用体变量的目的: 是希望用同一个内存段存放几种不同类型的数据。 注意: 在每一瞬时只能存放其中一种, 而不是同时存放几种。 2) 能够访问的是共用体变量中最后一次被赋值的成员, 在对一个新的成员赋值后原有的成员就失去作用。 3) 共用体变量的地址和它的各成员的地址都是同一地址。 4) 不能对共用体变量名赋值; 不能企图引用共用体变量名来得到一个值; 不能在定义共用体变量时对它初始化; 不能用共用体变量名作为函数参数。 7.2.3 共用体类型数据的特点 例7.7 设有若干个人员的数据, 其中有学生和教师。 学生的数据中包括: 姓名、号码、性别、职业、年级。教师的数据包括: 姓名、号码、性别、职业、职务。 可以看出, 学生和教师所包含的数据是不同的。 现要求把它们放在同一表格中, 见图7.13。 图7.13 全局结构体类型和变量声明: 其中一成员为共用体类型和变量的声明; struct { int num; char name[10]; char sex; char job; union P { int grade; char position[10]; }category; }person[2]; 也可以这样声明: (好的声明) 先声明共同体类型, 再全局声明结构体类型和变量。 union P { int grade; char position[10]; }; struct Data { int num; char name[10]; char sex; char job; P category; }; Data person[2]; if(person[i].job==s) cinperson[i].category.grade; else if (person[i].job==t) cinperson[i].category.position; —————————— if (person[i].job== s) coutperson[i].num setw(6) person[i].name person[i].sex person[i].job setw(10)person[i].category.gradeendl; else coutperson[i].num setw(6)person[i].name person[i].sex person[i].job setw(10)person[i].category.positionendl; 小结: 1、共同体类型和变量及使用成员 1) 声明共同体类型, 共同体成员共占内存 union A1 { int a; char b; }; //问:coutsizeof(A1); 2)定义共同体变量(三种方式) A1 c; 3) 只能引用(使用)共同体变量的某一个成员 c.a=10; cinc.a; coutc.a; 或 c.b=a; cinc.b; coutc.b; 1、如果一个变量只有几种可能的值, 可以定义为枚举(enumeration)类型。 2、所谓枚举是指将变
文档评论(0)