资源描述:
《《其他数据类型》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章其他数据类型学习目标结构体的定义与使用结构体与指针共用体的定义与使用枚举类型的定义与使用typedef定义数据类型位运算规则6.1结构体引入:数据的基本类型:整、实、字符。数组是构造类型:每个元素为同一类型有些问题仅用基本类型和数组来描述是无法实现的?举例:如学生情况表Num(整型)Name(字符串)Sex(字符)Agg(整型)Score(实型)Addree(字符串)10101张三M2197北京10102李四F2095.5武汉10103王五M20100广州这些数据类型虽不相同,但它们却是有机的整体,若将它们分别定义,则难以反映它们之
2、间的内在联系。如何解决呢?用结构体。结构体是一种构造数据类型用途:把不同类型的数据组合成一个整体,又称自定义数据类型结构体类型定义struct[结构体类型名]{类型标识符成员名;类型标识符成员名;……};成员类型可以是基本型或构造型struct是关键字,不能省略合法标识符,可根据情况省略6.1.1结构体类型的定义Structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};结构体类型定义,描述结构的组织形式,不分配内存num4字节name数组20字节s
3、ex1字节age4字节score4字节addr数组30字节以上语句的作用是:定义了一个名为student的结构体类型,它具有以下结构:6.1.2结构体变量(1)结构体类型变量的声明间接法:先声明结构体类型再定义变量名struct结构体名{类型标识符成员名;类型标识符成员名;……………};struct结构体名变量名表列;直接法:在声明结构体类型的同时定义变量struct结构体名{类型标识符成员名;类型标识符成员名;......}变量名表列;structstudent{intnum;charname[20];charsex;intage;fl
4、oatscore;charaddr[30];}stu1,stu2;struct{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}stu1,stu2;省去结构体类型名,用无名结构体直接定义变量只能一次。说明:1.结构体类型与结构体变量概念不同2.结构体可嵌套sturctdate{intmonth;intday;intyear;};structstudent{intnum;charname[20];charsex;structdatebirthday;floatscore
5、;charaddr[30];}student1,student2;numnamesexscorebirthdayaddrmonthdayyear说明:3.结构体成员名与程序中变量名可相同,不会混淆(2)结构体变量的引用:结构体变量.成员如:student1.num=1;strcpy(student1.name,“ZhangHua");student1.sex='M';student1.birthday.year=1980如果某成员本身又是一个结构体类型,则要用若干个成员运算符,一级一级找到最低一级的成员。成员运算符“.”的结合性为从左到右
6、。如:student1.birthday.year结构体变量的成员可以像普通变量一样进行各种运算。例如:student1.birthday.day++;sum=student1.score+5;可以引用结构体变量成员的地址,也可以引用结构体变量的地址。如:&student1.name;&student1;但不能用以下语句整体读入结构体变量,如:scanf(“%d,%s,%c,%d,%f,%s”,&student1);不能对结构体变量的整体操作对结构体进行整体操作有很多限制,C语言中能够对结构体变量进行整体操作的运算只有“=”和“&”。如:
7、structdatesunday,today,*p;sunday=today;/*结构体变量整体赋值*/p=&sunday;struct结构体类型名{类型标识符成员名;类型标识符成员名;......};struct结构体名结构体变量={初始数据};structss{intnum;charname[20];charsex;intage;charaddr[30];};structssstu1={112,“WangLin”,‘M’,19,“200BeijingRoad”};(3)结构体变量的初始化形式二:struct[结构体类型名]{类型标识符
8、成员名;类型标识符成员名;......}结构体变量={初始数据};structss{intnum;charname[20];charsex;intage;charaddr[30];}stu1=