第10章结构、共用及枚举课件

上传人:我*** 文档编号:141162395 上传时间:2020-08-04 格式:PPT 页数:25 大小:187.50KB
返回 下载 相关 举报
第10章结构、共用及枚举课件_第1页
第1页 / 共25页
第10章结构、共用及枚举课件_第2页
第2页 / 共25页
第10章结构、共用及枚举课件_第3页
第3页 / 共25页
第10章结构、共用及枚举课件_第4页
第4页 / 共25页
第10章结构、共用及枚举课件_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《第10章结构、共用及枚举课件》由会员分享,可在线阅读,更多相关《第10章结构、共用及枚举课件(25页珍藏版)》请在金锄头文库上搜索。

1、复合数据类型,数组 指针 结构体 联合体 (共用体) 枚举,第九讲 结构、共用及枚举,学习目标 掌握结构体类型的声明、结构体变量的定义及使用 了解单链表的概念 (结构体与指针的典型应用) 了解共用体类型的声明及变量的定义 了解枚举类型的概念、定义及使用 了解自定义类型的定义与使用方法,9.1 结构体,结构体类型的定义 结构体变量的定义及初始化 结构体成员的引用 结构体数组 结构体指针,学生成绩表,结构体类型的定义,结构体类型的性质:不同数据类型组成的集合体 定义格式,struct 结构体名 类型1 成员名1; 类型2 成员名2; 类型n 成员名n; ;,struct DATE int year

2、; int month; int day; ;,注意: 定义结构体类型并不分配内存,定义变量时分配 结构体成员可以是与本结构体完全无关的其他结构体类型,但不能是自身,struct cj_list char num10; char name10 ; int year ; char sex ; float math ,English ,computer ; ;,struct DATE date;,结构体变量的定义与初始化,结构体类型的变量定义 按照结构体类型分配实际的存储空间 声明格式: struct 结构体名 变量名表; 例:struct DATE date,brithday; 结构体类型变量的

3、初始化 按声明顺序逐成员进行 例: struct DATE date = 2008, 8, 8 ; struct cj_list stu1=c001,Tom,1990,M,88,90,88; 说明:初始化数据必须与结构体类型声明的类型与顺序完全一致,各个成员初始值之间用逗号分隔,struct DATE int year; int month; int day; ;,struct DATE int year; int month; int day; date,brithday;,可省略,结构体变量所占内存空间,结构体变量所占内存空间是其各个成员所占内存空间之和。 例:struct cj_list

4、 char num10; char name10 ; int year ; char sex ; float math ,English ,computer ; stu1,stu2,stu3; 程序中,可用sizeof(变量名或类型标识符),求得结构体变量所占内存空间的大小。例如,printf(%d,sizeof(stu1); printf(“%d”,sizeof(struct cj_list);,结构体成员的引用,成员选择操作符“.” - 通过结构体变量 格式:结构体变量名.成员名 例:struct DATE date; date.year = 2008; 成员选择操作符“” - 通过结构体

5、指针 格式:结构体变量名成员名 例:struct DATE *p = 说明: pyear (*p).year,例10.1 编写程序定义一个结构体变量,并从键盘输入一组数 据,计算出总分,并输出所有信息,main() struct cj_list char num10; char name10; int year; char sex; float math, English, computer, total; stu1; printf (n input name, num, year, sex, math, English, computern); scanf(%s%s%d%c%f%f%f,st

6、u1.name,stu1.num, ,结构体数组,是结构体和数组的结合 由同一结构体类型的结构体变量构成的数组 例:结构体数组 struct cj_list char num10; char name10; int year; char sex; float math, English, computer, total; stu40; 或 struct cj_list stu40; stu5.name0=T; stu5. math=90.5;,结构体嵌套示例,struct Date int year; int month; int day; ;,struct cj_list st; st.bi

7、rthday.year = 1990; st.birthday.month = 5; st.birthday.day = 14;,struct cj_list char num10; char name10; int year; char sex; float math, English, computer, total; ;,Date birthday;,结构体指针,指向结构体变量的指针 声明格式:struct 结构体名* 结构体指针变量名; 例: struct Child float height; float weight; Date brithday; char sex; ; stru

8、ct Child * p; struct Child a = 0.83, 30.0, 2003,5,17, M ; p = ,结构体与指针的一个重要应用 链表是一种动态进行存储分配的数据结构。 链表的组成:由一系列结点组成 头指针:存放一个地址,该地址指向一个(头)结点 结点:实际数据和链接下一个节点的指针,9.2 链表,链表的建立,用结构体建立链表: struct student int num; float score; struct student *next; ; 其中成员num和score用来存放结点中的用户需要用到的数据,next是指针类型的成员,它指向结构体struct stud

9、ent类型数据(下一个结点),简单链表,#include #define NULL 0 struct student long num; float score; struct student *next; ; main( ) struct student a,b,c,*head,*p; a. num=10101; a.score=89.5; b. num=10103; b.score=90; c. num=10107; c.score=85; head= ,运行结果: 10101 89.5 10103 90.0 10107 85.0,9.3 共用体,共用体类型的声明 共用体变量的定义 共用体

10、成员的引用 应注意的问题,共用体类型的声明,共用体类型的性质 不同数据类型组成的集合体 各个成员共享同一片存储空间,其他性质与结构体完全相同 声明格式,union 共用体名 数据类型1 成员名1; 数据类型2 成员名2; 数据类型n 成员名n; ;,union cj int scroe; char rank; ;,又称联合体,共用体成员的引用示例,建立课程表,其中包括:课程号、开课年级、课程性质、任课老师、成绩,课程性质若为P填分数,若为E则填等级。,struct Course int id; int grade; char type; char teacher10; union cj cou

11、rse_cj; ; struct Course c_table10;,嵌套的共用体变量course_cj作为结构体类型Course的成员,union cj float score; char rank; course_cj;,共用体成员的引用示例,建立教师与学生登记表,其中包括ID识别号、姓名、身份标志、职称(教师)或年级(学生),如若身份标志为S则填年级信息,若身份标志为T则填职称信息,struct PERSON int id; char name10; char levelflag; union int grade; char jobtitle10; level; ; struct PER

12、SON person;,嵌套的共用体变量level作为结构体类型PERSON的成员,注意:起作用的是最后一次赋值的成员 即:每个时刻只有一个成员起作用,换言之,联合体的成员不能同时起作用,9.4 枚举类型及其应用,如果一个变量只有几种可能的值,可以定义为枚举类型。 所谓“枚举”是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。 声明枚举类型用enum开头 enum Color red, yellow, blue ; enum Sex male, female ;,enumerate 列举,枚举类型的声明,枚举类型的声明 enum 枚举名 元素名1, 元素名2, , 元素名n ;

13、例:enum MONTH JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC ; 枚举类型变量的定义 例:enum MONTH month; 例:enum weekday sun,mon,tue,wed,thu,fri,sat workday,week-end;,关于枚举类型的说明,枚举类型声明中的元素为枚举文字,不是变量 枚举文字的值缺省时从0开始,依次递增 显式定义枚举文字的值也是允许的 例: enum weekday SUN=7, MON=1, TUE, WED, THU, FRI, SAT workday; 枚举变量可用

14、于比较或判断操作 例:if( month = DEC ) 整数要先进行类型转换才可以赋给枚举变量 workday=(weekday)5; 即:FRI,9.5 类型别名定义,类型别名定义的一般格式 typedef 原类型标识 新类型名; 例一:typedef int INTEGER; 例二:enum BOOL_TAG FALSE, TRUE ; typedef enum Boolean; 类型别名定义的性质 新类型与原类型相同,并未产生新类型,重新命名的自定义类型使程序更易理解 类型别名定义不是简单的类型替换: typedef char* PCHAR; PCHAR p, q; 定义了两个指针变量p 、q,等价于: char * p,*q; 而不是一个指针变量p与一个字符变量q,复合数据结构,复合数据结构 数组定义与使用方法 字符型数组 同类型数据组成 int a10; 下标: 0 9 char s8; 指针概念,指针基本运算,指针与数组的关系 指针与目标对象 p *p a char sex6; DATE birthday; char department10; int score; man;,struct DATE int year; int month; int day; ;,作 业,第201页: 第一题(填空) 第1 10小题,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号