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

上传人:本田雅阁 文档编号:2578802 上传时间:2019-04-11 格式:PPT 页数:25 大小:237.01KB
返回 下载 相关 举报
第8章结构联合和枚举ppt课件.ppt_第1页
第1页 / 共25页
第8章结构联合和枚举ppt课件.ppt_第2页
第2页 / 共25页
第8章结构联合和枚举ppt课件.ppt_第3页
第3页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第8章结构联合和枚举ppt课件.ppt》由会员分享,可在线阅读,更多相关《第8章结构联合和枚举ppt课件.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 s

2、tudent int num; char 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 student student a,b,c; 方法三:定义结构体时就说明 例:将 m,

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

4、ed long zip; /邮编 char *addr; /地址 unsigned long tel; ; struct 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

5、; a=200705312, “zhang li”, 18, w;,例: 给结构类型的数组变量赋值 struct student long int num; char 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.na

6、me; cinsk.sex; for(k=0; k3;k+) coutsk.num”n”; coutsk.name”n”; coutsk.sexendl; ,例:结构体嵌套的输入输出 struct date int 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; cinskbirth

7、day.day; ,for(k=0; k3;k+) coutsk.num; coutsk.name; coutsk.birthday.year; coutsk.birthday.month; coutsk.birthday.day; ,8.5 用结构指针变量代替结构体变量 struct student long int num; char name10; char sex; ; struct student a; 定义结构体变量 struct student *p; 定义结构体变量指针 p= p-num 引用a中的成员(方法一) (*p).num 引用a中的成员(方法二),8.6 用结构指针变

8、量代替结构体数组变量 struct student long int num; char name10; char sex; ; struct student s30; struct student *p; p=s; p-num 引用某一元素中的num成员 (*p).num (p+)-num 引用某一元素中的num成员后指针指向下一个(人)数组元素.,例: 用结构体类型指针变量完成上题 struct date int year; int month; int day struct student int num; char name10; struct date birthday; s30;,

9、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; coutbirthday.month; coutbirthday.day; ,8.7 位域 位域是以二进制形式定义结构成员, 使用多少定义多少。 8.7.1 定义位域的方法 例: struct student char *name; unsigned int

10、 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 。 位域成员所占位数可任意。 如果从新的字节开始,可以使用: unsigned int 0;,8.8 联合(共用体) 8.8.1 联合的概念与定义 不同的数据可以共用存储单元 例: union un int n; char na

11、me; 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备18001539号-1