资源描述:
《共用体和枚举(1学时)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、计算机程序设计第十一章结构体、共用体、枚举之信息科学与工程学院计算机系赵秀岩温故结构体结构体类型的定义结构体变量的定义结构体变量的存储结构体变量的初始化结构体变量的引用结构体数组结构体指针结构体应用举例structstudent{intnum;charclass[10];charname[20];charsex;intage;intscore;};structstudent{intnum;charclass[10];charname[20];charsex;intage;intscore;};s
2、tructstudentstudent1,student2;structstudent{intnum;charclass[10];charname[20];charsex;intage;intscore;};structstudentstudent1={10001,”jizi041”,”zhangyu”,’M’,20,98};本节内容共用体枚举问题的提出共用体思考:用什么数据类型来存储上述表格?“年级/职称”列数据类型特点?共用体共用体的概念需要:把不同类型的变量存放到同一段内存单元;目的:节约
3、内存或对同一段内存单元的数据按不同类型处理;则:需要构造“共用体”数据结构类型,共用体也称为“联合(体)”共用体类型的定义union共用体类型名{数据类型成员1;数据类型成员2;数据类型成员3;数据类型成员4;………………};uniondata{inti;floatf;charch;};共用体定义的一般形式共用体定义举例共用体类型变量的定义uniondata{inti;floatf;charch;};uniondatad1;uniondata{inti;floatf;charch;}d1;uni
4、on{inti;floatf;charch;}d1;共用体数据的存储“共用体”:各成员占相同的起始地址,所占内存长度等于最长的成员所占内存。可以用Sizeof来测量。提示:此处与结构体变量的存储比较记忆!!!共用体变量的引用只能引用共用体变量的成员,如、uniondata{inti;floatf;charch;};uniondataa;a.i;a.ch;a.f;共用体变量的引用uniondata{inti;floatf;charch;};main(){uniondataa;a.i=3;a.f
5、=3.14;a.ch='a';printf("%d,%f,%c",a.i,a.f,a.ch);}union1.c共用体变量中的值是最后一次存放的成员的值;共用体类型数据的特点共用体变量不能整体初始化,因为共用体类型的变量中的成员每一时刻只能有一个有效,故同时赋值无意义;uniondata{inti;charch;floatf;}a={1,'a',1.5};共用体应用举例编程建立一个教师学生登记表,其中包括编号、姓名身份(student、student)、职称。如果身份是“student
6、”,职称为年级(1、2、3),如果身份是“teacher”,职称为职称(讲师、教授等)。(5条记录)。实例剖析表格用哪种数据类型表示?“职称”字段有几种数据类型?如何表示?表格中的5条记录如何表示?结构体结构体数组共用体结构体、共用体的构造structperson{intnum;charname[20];charjob[10];union{intgrade;charposition[10];}level;}主函数代码main(){inti;structpersonperson[5];for(i=
7、0;i<5;i++){scanf("%d%s%s",&person[i].num,person[i].name,person[i].job);if(strcmp(person[i].job,"student")==0){printf("inputstudentgrade!");scanf("%d",&person[i].level.grade);}elseif(strcmp(person[i].job,“teacher")==0){printf("inputstudentposition!");
8、scanf("%s",person[i].level.position);}elseprintf("thedatayouinputiswrong!");}printf("numtnamettjobttgrade/position");printf("-------------------------------------------------------");for(i=0;i<5;i++){if(strcmp(person[i].job,"student")==0)pri