第8章结构联合和枚举ppt课件_第1页
第8章结构联合和枚举ppt课件_第2页
第8章结构联合和枚举ppt课件_第3页
第8章结构联合和枚举ppt课件_第4页
第8章结构联合和枚举ppt课件_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、构例如,定义一个”学生“属性的结构体。struct student 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 students

3、tudent a,b,c;方法三:定义结构体时就说明例:将 m, 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 结构体成员结构体中的成员还

4、可以是另一个结构体变量struct pat unsigned 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.depart.num s3.num s3.home.tel 8.3.5 结构体变量的初始化结构体变量的初始化(赋值赋值)例: 给变量赋值struct student lo

5、ng int num; char name10; int age; char sex; 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()

6、int k; for(k=0; ksk.num; ; cinsk.sex; for(k=0; k3;k+) coutsk.num”n”; ”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.birthday.year; cins

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

8、 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;main()int k; struct student *p; p=s; for(k=0; kp-num; cinp-name; cinp-birthday.year; cinp-birthday.month; cinp-

9、birthday.day; for(k=0; k3;k+,p+) coutnum; coutname; coutbirthday.year; coutbirthday.month; coutbirthday.day; 8.7 位域位域 位域是以二进制形式定义结构成员, 使用多少定义多少。8.7.1 定义位域的方法定义位域的方法 例: struct student char *name; unsigned int sex : 1; unsigned int age : 7; ;说明:1. 在成员后使用 : n 即可, n 指的是二进制位数。2. 使用位域和不使用位域差2个字节。3. 1位可表示1

10、 或 0, 8 位可以表示 0到 128。8.7.2 使用位域成员的方法使用位域成员的方法与普通成员一样,注意1 和 0 即可表示逻辑值。8.7.3 使用位域注意事项使用位域注意事项1. 位域成员必须是unsigned int 。2. 位域成员所占位数可任意。3. 如果从新的字节开始,可以使用: 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; =”hello” b.x=3.14159628.8.4 联合体类型的特点联合体类型的特点 共享内存单元 每一时刻只能有一个成员起作用 最后一次赋值的成员有效 各成员的首地址相同 联合体变量不能参加任何运算和初始化 8.9 枚举枚举 8.9.1枚举类型的定义枚举类型的定义例: enum weekdaysun=5,mon=1,tue,wen,thu,fri,sat;说明: 可以直接改变成员的顺序。8.9.2 枚举类型变量的说明枚举类型变量的说明方法1: 直接枚举类型

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论