C语言程序设计 工业和信息化普通高等教育“十二五”规划教材立项项目 教学课件 ppt 作者 赵山林 高媛 第十章 结构体、联合体与枚举

上传人:E**** 文档编号:89369987 上传时间:2019-05-24 格式:PPT 页数:31 大小:281.50KB
返回 下载 相关 举报
C语言程序设计 工业和信息化普通高等教育“十二五”规划教材立项项目  教学课件 ppt 作者 赵山林 高媛 第十章 结构体、联合体与枚举_第1页
第1页 / 共31页
C语言程序设计 工业和信息化普通高等教育“十二五”规划教材立项项目  教学课件 ppt 作者 赵山林 高媛 第十章 结构体、联合体与枚举_第2页
第2页 / 共31页
C语言程序设计 工业和信息化普通高等教育“十二五”规划教材立项项目  教学课件 ppt 作者 赵山林 高媛 第十章 结构体、联合体与枚举_第3页
第3页 / 共31页
C语言程序设计 工业和信息化普通高等教育“十二五”规划教材立项项目  教学课件 ppt 作者 赵山林 高媛 第十章 结构体、联合体与枚举_第4页
第4页 / 共31页
C语言程序设计 工业和信息化普通高等教育“十二五”规划教材立项项目  教学课件 ppt 作者 赵山林 高媛 第十章 结构体、联合体与枚举_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《C语言程序设计 工业和信息化普通高等教育“十二五”规划教材立项项目 教学课件 ppt 作者 赵山林 高媛 第十章 结构体、联合体与枚举》由会员分享,可在线阅读,更多相关《C语言程序设计 工业和信息化普通高等教育“十二五”规划教材立项项目 教学课件 ppt 作者 赵山林 高媛 第十章 结构体、联合体与枚举(31页珍藏版)》请在金锄头文库上搜索。

1、第十章 结构体、联合体与枚举,Page 2,10.1 结构体类型及结构体变量,结构体类型的定义 结构体类型定义的一般形式为: struct 结构体类型名 类型说明符 成员名1; 类型说明符 成员名2; 类型说明符 成员名n; ;,Page 3,10.1 结构体类型及结构体变量,结构体类型的定义 其中,struct是定义结构体类型的关键字,不能省略。结构体类型名遵循标识符命名规则,用来标识所定义的结构体类型。花括弧内是该结构体所包含的各个成员,类型说明符用来说明每个成员的类型,它们必须是有效的数据类型,可以是int、float、double、char以及指针、数组、联合体等类型。结构体成员名同样

2、遵循标识符命名规则,可以与程序中其他变量名相同,互不干扰。,Page 4,10.1 结构体类型及结构体变量,结构体变量 1结构体变量的定义 (1)先定义结构体类型,再定义结构体类型变量。 一般形式为: struct 结构体类型名 类型说明符 成员名1; 类型说明符 成员名2; 类型说明符 成员名n; 结构体变量名表列; struct 结构体类型名 结构体变量名表列;,Page 5,10.1 结构体类型及结构体变量,结构体变量 1结构体变量的定义 (2)在定义结构体类型的同时定义结构体变量。 一般形式为: struct 结构体类型名 类型说明符 成员名1; 类型说明符 成员名2; 类型说明符 成

3、员名n; 结构体变量名表列;,Page 6,10.1 结构体类型及结构体变量,结构体变量 1结构体变量的定义 (3)在定义结构体类型的同时定义结构体变量。 一般形式为: struct 类型说明符 成员名1; 类型说明符 成员名2; 类型说明符 成员名n; 结构体变量名表列;,Page 7,10.1 结构体类型及结构体变量,结构体变量 2结构体变量的引用 结构体成员引用的一般形式如下: 结构体变量.成员名 其中“.”为结构体成员运算符,所有C语言运算符中它的优先级最高,因此可以把上述引用形式作为一个整体来看待。,Page 8,10.1 结构体类型及结构体变量,结构体变量 3结构体变量的初始化 结

4、构体变量的初始化和一维数组的初始化类似。将各个成员的初值用一对花括弧括起来,括弧内各初值的数据类型、顺序要和结构体类型中的成员一致,数据项间用逗号分隔。初始化时按照左对应关系赋初值,如果初值的个数少于结构中成员的个数,其余成员将自动初始化为0。,Page 9,10.1 结构体类型及结构体变量,结构体嵌套 结构体类型成员的类型也可以是结构体类型,即结构体类型定义是可以嵌套的。结构体定义的嵌套可以是多重的。 嵌套的结构体类型变量中的结构体成员和同类型的结构体变量具备相同的性质。引用时按照从左到右,从外到内的方式,用“”运算一级一级地运算,直到找到最低一级的成员。,Page 10,10.1 结构体类

5、型及结构体变量,结构体变量做函数形参 结构体变量做函数形参时,函数调用时实参只能是同类型的结构体变量,遵循单向值传递规则。,Page 11,10.2 结构体数组,结构体数组的定义 结构体数组的定义方法与其他整型数组、实型数组和字符型数组的定义方法类似,只是结构体数组中每一个元素的数据类型都是结构体类型。同一个结构体数组中的数组元素具有相同的结构体类型。 结构体数组的定义与结构体变量的定义类似,可以使用3种形式中的任何一种形式。,Page 12,10.2 结构体数组,结构体数组的引用 访问结构体数组元素的成员的一般格式为: 结构体数组名下标.成员名,Page 13,10.2 结构体数组,结构体数

6、组的初始化 结构体数组初始化的方法与数组类似。结构体数组中包含有多个元素,每一个元素又是结构体类型的,因此在初始化时要仔细考虑数组的维数、结构体成员的顺序、类型之间的对应关系。 一维结构体数组初始化的方法类似于二维基本类型数组。一种方法是将数组元素的每一个初值书写在小集合内,各个小集合构成大集合,然后将大集合初始化给一维结构体数组。另一种方法是将数组每个元素的每一个初值按照数组元素中的各个成员在内存中的存放顺序书写在集合内,然后将集合初始化给一维结构体数组。,Page 14,10.3 结构体指针,指向结构体变量的指针变量 结构体变量所占内存单元的首地址称为结构体变量的指针。指向一个结构体变量的

7、指针变量,称为结构体指针变量。结构体指针变量中的值是所指向的结构体变量的指针。 结构体指针变量定义的一般形式为: struct结构体类型名 *结构体指针变量名; C语言中为了直观而方便的通过指针来引用结构体成员,专门设置了指向运算符“”来访问结构体成员,一般形式为: 结构体指针成员名,Page 15,10.3 结构体指针,指向结构体数组元素的指针 同前面讨论的指向数组元素的指针一样,结构体指针也可以指向结构体数组元素。当结构体指针指向数组元素之后,就可以使用该指针遍历结构体数组中的所有元素。,Page 16,10.3 结构体指针,结构体指针变量做函数形参 结构体指针变量做函数形参,函数调用时由

8、实参传向形参的只是地址值,从而减少了时间和空间的开销。指向结构体的指针变量做函数的形参,要求对应的主调函数的实参为相同结构体类型的指针或结构体变量的地址,被调函数就可以通过形参指针变量来访问主调函数中的结构体变量或结构体数组元素。,Page 17,10.4 链表,单向链表的概念 链式存储结构不需要一组连续的存储单元,它的数据元素以结点的形式分散存放在存储空间中。单向链表中为了使数据元素保持逻辑上的关系,每个结点必须知道其后继结点的地址。 在单向链表中,每个结点由两部分组成:一部分存放结点的数据信息,称为数据域;另一部分存放该结点指向下一个结点的指针,称为指针域。,Page 18,10.4 链表

9、,内存的动态分配与释放函数 1动态分配内存空间函数malloc( ) malloc( )的函数原型: void *malloc(unsigned int size) 函数的形参是无符号整型,返回值是一个无值型指针。函数的功能是在内存的动态存储区中分配长度为size个字节连续空间。若成功分配,则返回一个指向所分配内存空间低字节的指针;若不成功则返回零指针NULL。 为了说明所分配的内存空间存储何种类型的数据,函数调用后应使用类型的强制转换运算符对返回值进行强制类型转换来确定所分配内存中存储的数据的类型。,Page 19,10.4 链表,内存的动态分配与释放函数 2动态分配内存空间函数calloc

10、( ) calloc( )的函数原型: void *calloc(unsigned int num,unsigned int size) 函数的形参是2个无符号整型,返回值是一个无值型指针。函数的功能是在内存的动态存储区中分配长度为num*size个字节连续存储空间。若成功分配,则返回一个指向所分配内存空间低字节的指针;若不成功则返回零指针NULL。,Page 20,10.4 链表,内存的动态分配与释放函数 3释放内存空间函数free( ) free( )的函数原型: void free(void *buffer) 函数的形参是一个无值型指针,函数无返回值。函数的功能是释放buffer所指向的

11、内存空间。被释放的存储空间是由malloc( )函数或calloc( )函数所分配的。,Page 21,10.4 链表,单向链表算法 1单向链表的建立 链表的建立是从空链表出发,逐渐增加结点的过程。 2单向链表的输出 链表的输出是将一个已建立好的链表中各个结点的数据项全部地或部分地输出显示。 3单向链表的查找 链表的查找是指在已知链表中查找值为某指定值的结点。 4单向链表的删除 链表的删除是指从单向链表中按指定的数据项删除一个或几个结点。 5单向链表的插入 链表的插入是指将一个已知结点按某个数据项插入到已知链表中,插入前链表一般是按某个数据项顺序排好序的。,Page 22,10.4 链表,单向

12、链表算法 1单向链表的建立 链表的建立是从空链表出发,逐渐增加结点的过程。 2单向链表的输出 链表的输出是将一个已建立好的链表中各个结点的数据项全部地或部分地输出显示。 3单向链表的查找 链表的查找是指在已知链表中查找值为某指定值的结点。 4单向链表的删除 链表的删除是指从单向链表中按指定的数据项删除一个或几个结点。 5单向链表的插入 链表的插入是指将一个已知结点按某个数据项插入到已知链表中,插入前链表一般是按某个数据项顺序排好序的。,Page 23,10.5 联合体,联合体类型的定义 联合体类型的定义方式与结构体很类似,定义的一般形式为: union联合体类型名 类型说明符 成员名1; 类型

13、说明符 成员名2; 类型说明符 成员名n; ;,Page 24,10.5 联合体,联合体变量的定义 (1)先定义联合体类型,再定义联合体变量 例如: union udata int i; char c; float f; ; union udata u,*p;,Page 25,10.5 联合体,联合体变量的定义 (2)定义联合体类型的同时定义联合体变量 例如: union udata int i; char c; float f; u,*p;,Page 26,10.5 联合体,联合体变量的定义 (3)直接定义联合体变量 例如: union int i; char c; float f; u,*

14、p;,Page 27,10.5 联合体,联合体变量的引用 1使用成员运算符“.”引用联合体的成员 使用成员运算符“.”引用联合体的成员的一般格式为: 联合体变量.成员名 2使用指向运算符“-”引用联合体的成员 可以通过指向联合体的指针来引用联合体的成员。其格式如下: 联合体指针-成员名,Page 28,10.6 枚举,枚举类型的定义 枚举类型通过枚举一系列有序的标识符来定义。枚举类型定义的一般格式为: enmu枚举类型名枚举分量名1,枚举分量名2,枚举分量名n;,Page 29,10.6 枚举,枚举变量的定义和引用 1先定义枚举类型,再定义枚举变量 enum week sun,mon,tue,

15、wed,thu,fri,sat; enum week day1,day2; 2定义枚举类型的同时定义枚举变量 enum week sun,mon,tue,wed,thu,fri,sat day1,day2; 3直接定义枚举变量 enum sun,mon,tue,wed,thu,fri,sat day1,day2;,Page 30,10.7 类型别名,类型别名定义的一般形式为: typedef 类型说明符 新类型名表列; 其中,typedef是关键字,类型说明符可以是C语言中规定的所有合法的类型说明符或已定义过的类型说明符,新类型名表列可以有一个或多个标识符,用逗号分隔。习惯上,重新定义的新类型名用大写标识符命名。,谢谢使用,C语言 程序设计,中北大学 电子与计算机科学技术学院,第十章 结构体、联合体与枚举,

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

当前位置:首页 > 高等教育 > 大学课件

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