第8章结构、联合和枚举.ppt

上传人:sccc 文档编号:5931462 上传时间:2023-09-05 格式:PPT 页数:25 大小:237.54KB
返回 下载 相关 举报
第8章结构、联合和枚举.ppt_第1页
第1页 / 共25页
第8章结构、联合和枚举.ppt_第2页
第2页 / 共25页
第8章结构、联合和枚举.ppt_第3页
第3页 / 共25页
第8章结构、联合和枚举.ppt_第4页
第4页 / 共25页
第8章结构、联合和枚举.ppt_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《第8章结构、联合和枚举.ppt》由会员分享,可在线阅读,更多相关《第8章结构、联合和枚举.ppt(25页珍藏版)》请在三一办公上搜索。

1、第8章 结构、联合和枚举,8.1 类型定义概念:由用户自己定义数据类型方法:非结构型定义(类型的引用)和结构类型定义8.2非结构型定义例:将integer 也定义成 int typedef int integer 在程序中:int a,b,c;和 integer a,b,c;作用相同 例:将 ul 定义为 unsigned long typedef unsigned long ul(以少代多),8.3 结构(结构类型定义)把不同的数据类型或多个数据定义成一个结构,该结构(类型)称为结构体.8.3.1 定义结构例如,定义一个”学生“属性的结构体。struct student int num;ch

2、ar name10;int age;char sex;float score;char addr30;m,n;,说明:其中student 是由用户定义的结构体类型名(在数据类型中有增加了一个类型)。其中的成员称作域名。8.3.2 说明结构变量(结构类型变量定义方法)例:将a,b,c 说明成student 结构体类型方法一:用结构体类型进行说明struct student a,b,c,方法二:先用宏定义#define student struct studentstudent a,b,c;方法三:定义结构体时就说明例:将 m,n 说明成 teacher 结构体类型struct teacher c

3、har name10;int age;char sex;char addr30;m,n;,说明:1.结构体中的成员称为域名或分量。2.结构体和宏定义常常以头文件方式使用。3.每一个成员需要进行类型说明。4.结构体中的成员名可以与普通变量名相同,但使用的方式不同。5.结构体中的成员还可以是另一个结构体变量。6.可以使用sizeof()函数测出每一个变量、类型(float等)等占用内存的字节数。,8.3.3 结构体成员结构体中的成员还可以是另一个结构体变量struct pat unsigned long zip;/邮编 char*addr;/地址 unsigned long tel;struct

4、address_book char*name;long num;pat depart;/单位 pat home;/家庭 a;,8.3.4 访问结构体变量例:address_book a,s 10 a.num a.name a.depart.num s3.num s3.home.tel 8.3.5 结构体变量的初始化(赋值)例:给变量赋值struct student long int num;char name10;int age;char sex;a=200705312,“zhang li”,18,w;,例:给结构类型的数组变量赋值struct student long int num;cha

5、r name10;int age;char sex;s30=200205312,“zhangli”,2002;,8.4 结构体类型的变量输出例:使用scanf()给结构体数组类型赋值,输入三个学生的有关信息,然后输出程序为:struct student long int num;char name10;char sex;s3;,main()int k;for(k=0;ksk.num;cinsk.name;cinsk.sex;for(k=0;k3;k+)coutsk.num”n”;coutsk.name”n”;coutsk.sexendl;,例:结构体嵌套的输入输出struct date int

6、 year;int month;int day;struct student long int num;char name10;struct date birthday;s3;,main()int k;for(k=0;ksk.num;cinsk.name;cinsk.birthday.year;cinsk.birthday.month;cinsk.birthday.day;,for(k=0;k3;k+)coutsk.num;coutsk.name;coutsk.birthday.year;coutsk.birthday.month;coutsk.birthday.day;,8.5 用结构指针变

7、量代替结构体变量 struct student long int num;char name10;char sex;;struct student a;定义结构体变量 struct student*p;定义结构体变量指针 p=p-num 引用a中的成员(方法一)(*p).num 引用a中的成员(方法二),8.6 用结构指针变量代替结构体数组变量 struct student long int num;char name10;char sex;struct student s30;struct student*p;p=s;p-num 引用某一元素中的num成员(*p).num(p+)-num 引

8、用某一元素中的num成员后指针指向下一个(人)数组元素.,例:用结构体类型指针变量完成上题struct date int year;int month;int day struct student int num;char name10;struct date birthday;s30;,main()int k;struct student*p;p=s;for(k=0;kp-num;cinp-name;cinp-birthday.year;cinp-birthday.month;cinp-birthday.day;,for(k=0;knum;coutname;coutbirthday.year

9、;coutbirthday.month;coutbirthday.day;,8.7 位域 位域是以二进制形式定义结构成员,使用多少定义多少。8.7.1 定义位域的方法 例:struct student char*name;unsigned int sex:1;unsigned int age:7;,说明:在成员后使用:n 即可,n 指的是二进制位数。使用位域和不使用位域差2个字节。1位可表示1 或 0,8 位可以表示 0到 128。8.7.2 使用位域成员的方法与普通成员一样,注意1 和 0 即可表示逻辑值。8.7.3 使用位域注意事项 位域成员必须是unsigned int。位域成员所占位数

10、可任意。如果从新的字节开始,可以使用:unsigned int 0;,8.8 联合(共用体)8.8.1 联合的概念与定义 不同的数据可以共用存储单元例:union un int n;char name;float x;其特点是所有成员具有相同的首地址,8.8.2 联合体变量的定义 联合体类型名 变量名8.8.3 联合体的使用通过变量使用例:un a,b;a.n=2003;a.name=”hello”b.x=3.1415962,8.8.4 联合体类型的特点共享内存单元每一时刻只能有一个成员起作用最后一次赋值的成员有效各成员的首地址相同联合体变量不能参加任何运算和初始化,8.9 枚举 8.9.1枚举类型的定义例:enum weekdaysun=5,mon=1,tue,wen,thu,fri,sat;说明:可以直接改变成员的顺序。8.9.2 枚举类型变量的说明方法1:直接枚举类型说明weekday days;方法2:可以在定义枚举类型时说明,8.9.3 枚举变量的使用 只能做赋值和关系运算。days=sun;说明:1.在程序中起到一个限定作用。2.使用时,枚举变量的取值限定在定义时的给定范围.。3.枚举变量输出时,只能输出枚举定义时的序号.例如:days=sat;cdaysendl;,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号