复杂构造数据类型.ppt
*第五章复杂构造数据类型*第五章复杂构造数据类型5.1结构体5.2共用体5.3枚举类型5.1.1结构体的引出及使用*每条记录中数据的数据类型不相同学号姓名性别年龄入学成绩所属学院0501李明男19610信息0502张莉女19595信息0503王涛男20580控制学号姓名性别年龄入学成绩所属学院intnumcharname[10]charsexintageintscorecharinstitute[20]如何表示如下的数据信息?结构体是由一些逻辑相关,但数据类型不同的分量组成的一组数据。结构体的定义*注意不要忘了分号成员表列struct结构体类型名{数据类型成员名1;数据类型成员名2;::数据类型成员名n;};用户定义的标识符说明:定义了结构体类型,仅仅是定义了数据的组织形式,创立了一种数据类型,但并不会为这种结构体类型分配内存空间,只有定义了结构体变量,才会为变量分配空间。例:structstudent{intnum;charname[10];charsex;intage;intscore;charinstitute[20];};定义结构体变量的方法(1)先定义结构体类型,再定义变量structstudent{charname[10];intage;ints1,s2;};structstudentst1,st2;结构体类型定义结构体变量定义内存中结构体变量占有一片连续的存储单元,其占用的字节数可用sizeof运算符算出:printf(“%d\n”,sizeof(structstudent));printf(“%d\n”,sizeof(st1));结构体变量st1和st2各自都需要16个字节的存储空间st1st2nameages1s2定义结构体变量的方法(2)定义结构体类型同时定义变量structstudent{charname[10];intage;ints1,s2;}st1,st2;(3)直接定义结构体变量struct{charname[10];intage;ints1,s2;}st1,st2;定义结构体变量注意:这里没有结构体类型名,这种方式有时使用并不方便,因此不建议大家采用结构体类型可以嵌套定义*例:structdate{ intyear;intmonth;intday;};structstud{charname[10];structdatebirthday;ints1,s2;};或:structstud{charname[10];structdate{intyear;intmonth;intday;}birthday;ints1,s2;};结构体变量的引用格式:结构体变量名.成员名structstudent{charname[10];intage;ints1,s2;};structstudentst1;strcpy(st1.name,“Mary”);st1.age=21;