C语言程序设计 理实一体化教程 教学课件 ppt 作者 杜恒 第10章 结构体和共用体

上传人:E**** 文档编号:89187984 上传时间:2019-05-20 格式:PPT 页数:36 大小:988KB
返回 下载 相关 举报
C语言程序设计 理实一体化教程  教学课件 ppt 作者 杜恒 第10章  结构体和共用体_第1页
第1页 / 共36页
C语言程序设计 理实一体化教程  教学课件 ppt 作者 杜恒 第10章  结构体和共用体_第2页
第2页 / 共36页
C语言程序设计 理实一体化教程  教学课件 ppt 作者 杜恒 第10章  结构体和共用体_第3页
第3页 / 共36页
C语言程序设计 理实一体化教程  教学课件 ppt 作者 杜恒 第10章  结构体和共用体_第4页
第4页 / 共36页
C语言程序设计 理实一体化教程  教学课件 ppt 作者 杜恒 第10章  结构体和共用体_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《C语言程序设计 理实一体化教程 教学课件 ppt 作者 杜恒 第10章 结构体和共用体》由会员分享,可在线阅读,更多相关《C语言程序设计 理实一体化教程 教学课件 ppt 作者 杜恒 第10章 结构体和共用体(36页珍藏版)》请在金锄头文库上搜索。

1、第10章 结构体和共用体,第10章 结构体和共用体,10.1 结构体及结构体变量 10.2 结构体数组 10.3 结构体指针 10.4 链表 10.5 共用体 10.6 综合实训 习 题,10.1 结构体及结构体变量,知识导例 阅读并理解下面的程序。,10(242-282)P41 fyy_Embed_1.png,图10-1 程序ex10_1_1.c运行结果 相关知识 在前面的章节中,已经介绍了C语言提供的基本数据类型,但在实际中仅仅应用这些基本数据类型并不能很好地满足需要。 1)结构体(关键字是struct)。 2)共用体(关键字是union)。,10.1 结构体及结构体变量,3)枚举类型(关

2、键字是enum)。 4)typedef关键字为已存在的类型定义新名字。 1.typedef关键字 2.结构体类型的定义 3.结构体变量 (1)结构体变量的定义 程序ex10_1_1中的代码: 1)先定义结构体类型,再定义结构体变量,在程序ex10_1_1中就是使用这种方法。 2)在定义结构体类型的同时定义结构体变量。 3)直接定义结构体变量。,10.1 结构体及结构体变量,1)类型和变量是不同的概念,结构体类型仅仅是一个类型,系统不会为一个类型分配存储空间,而会为这个类型定义的变量分配存储空间。 2)结构体变量中的成员(域)可以单独使用,它的作用相当于普通变量。 3)结构体中的成员可以是任意类

3、型的变量,当然也可以是一个结构体类型的变量。 4)结构体中的成员名,可以同程序中其他变量名同名而互不影响,因为二者代表的不是同一个对象。,10.1 结构体及结构体变量,(2)结构体变量的存储结构 对于结构体变量,由于其中含有多个成员,所以与整型、实型、字符型等简单变量的存储有所不同,系统会为结构体变量中的每一个成员都分配存储空间。需要注意的是,不同的编译系统为结构体分配存储空间的策略和实现也不相同。在Turboc中,系统为结构体变量所分配的空间大小等于结构体中各成员所占的空间长度之和,但在VC+ 6.0环境中却不一样。,10(242-282)P41 fyy_Embed_2.jpg,图10-2

4、结构体变量p1在内存中的存储情况(B表示Byte) 表10-1 结构体变量中不同数据类型成员的对齐方式,10.1 结构体及结构体变量,表10-1 结构体变量中不同数据类型成员的对齐方式,10(242-282)P41 fyy_Embed_3.jpg,图10-3 结构体变量p2在内存中的存储情况(B表示Byte) (3)结构体变量的引用 在定义了一个结构体变量以后,就要对这个变量进行存取,但是在C语言中对结构体变量进行操作的时候,除了可以对相同类型的结构体变量进行整体赋值外,不能对一个结构体变量进行整体的输入输出,而是要逐成员引用。,10.1 结构体及结构体变量,(4)结构体变量的初始化 和其他类

5、型一样,结构体变量在定义的时候,也可以直接初始化。 实践训练 【实训项目】 1.实训内容 2.解决方案,10(242-282)P41 fyy_Embed_4.png,图10-4 程序prac10_1_1.c运行结果 3.项目分析,10.2 结构体数组,知识导例 阅读下面的程序,理解并掌握结构体数组的使用。 相关知识,10(242-282)P41 fyy_Embed_5.png,图10-5 程序ex10_2_1.c运行结果 1.结构体数组的定义,10.2 结构体数组,10(242-282)P41 fyy_Embed_6.jpg,图10-6 结构体数组d1中各数组元素的值 2.结构体数组的引用 3

6、.结构体数组的初始化 实践训练 【实训项目】 1.实训内容,10.2 结构体数组,2.解决方案,10(242-282)P41 fyy_Embed_7.png,3.项目分析 知识拓展,10.2 结构体数组,和基本类型的数组一样,如果需要也可以定义二维、三维和多维的结构体数组。,10.3 结构体指针,知识导例 1.阅读下面的程序,理解并掌握结构体及指针的使用,10(242-282)P41 fyy_Embed_8.png,图10-8 程序ex10_3_1.c运行结果,10.3 结构体指针,2.阅读下面的程序,理解并掌握函数之间有关结构体类型数据的传递,10(242-282)P41 fyy_Embed

7、_9.png,图10-9 程序ex10_3_2运行结果 相关知识,10.3 结构体指针,图10-10 指向结构体类型的指针,1.指向结构体变量的指针 (1)结构体变量.成员名 (2)(*结构体指针).成员名 (3)结构体指针(成员名,10.3 结构体指针,图10-11 指向结构体数组的指针,2.指向结构体数组的指针 3.函数之间有关结构体类型数据的传递,10.3 结构体指针,(1)使用结构体变量的成员作为函数的参数 也就是在调用函数时,向函数传递一个结构体变量的成员,因为结构体变量成员可以当做一个普通变量使用,当然也可以作为函数的参数来进行数据的传递。 (2)使用结构体变量作为函数的参数 把结

8、构体变量作为一个整体传送给被调用的函数,这时实参向形参传递的是结构体变量的值,系统将为结构体类型的形参开辟相应的存储单元,并将实参中各成员的值传递给形参的各个成员,此种参数传递方式的函数调用属于传值调用。,10.3 结构体指针,(3)使用指向结构体变量(或结构体数组)的指针作为函数的参数 在程序ex10_3_2中,函数print2和print3的参数都是结构体指针,在调用时可以给它们传递结构体的地址,或者是结构体的指针。当然,传递结构体数组的指针也是可以的,函数print3在调用时就是传递结构体数组的指针,因此在方法体中还进行了指针的加1操作用来指向结构体数组的下一个元素。 实践训练 【实训项

9、目一】 1.实训内容 表10-2 成绩登记表,10.3 结构体指针,表10-2 成绩登记表,2.解决方案,10.3 结构体指针,10(242-282)P41 fyy_Embed_12.png,图10-12 程序prac10_3_1.c运行结果,10.3 结构体指针,3.项目分析 【实训项目二】 1.实训内容 2.解决方案 3.项目分析,10(242-282)P41 fyy_Embed_13.jpg,10.4 链表,知识导例 1.阅读下面的程序,理解并掌握链表的概念与使用,10(242-282)P41 fyy_Embed_14.png,图10-14 程序ex10_4_1.c运行结果 2.利用结构

10、体创建一个链表,然后进行链表的动态创建、插入、删除等操作,10.4 链表,10(242-282)P41 fyy_Embed_15.png,图10-15 程序ex10_4_2.c运行结果,10.4 链表,相关知识 1.链表的概念,10(242-282)P41 fyy_Embed_16.jpg,图10-16 程序ex10_4_1.c中的链表结构 2.动态创建链表,图10-17 动态创建的链表,3.查找链表中的节点,10.4 链表,4.在链表中插入节点 1)新建节点p并为节点赋值。 2)将p连到q后面的节点之前,可通过p(next=q(next实现。 3)将p连入链表中,q和原指向的节点断开,可通过

11、q(next=p实现。 5.在链表中删除一个节点 1)将p后面的节点连到q节点的后面,可通过q(next=p(next实现。 2)将p节点的指针域置空,与原链表断开,通过p(next=NULL来实现。 3)销毁节点p,通过free(p)来实现。 实践训练 【实训项目】,10.4 链表,1.实训内容 表10-3 成绩登记表,表10-3 成绩登记表,2.解决方案,10.4 链表,10(242-282)P41 fyy_Embed_18.png,图10-18 程序prac10_4_1.c运行结果,10.5 共用体,知识导例 阅读下面的程序,理解并掌握共用体的使用。,10(242-282)P41 fyy

12、_Embed_19.png,图10-19 程序ex10_5_1.c运行结果 相关知识 程序中使用union关键字定义的数据类型叫做共用体类型,它是指将不同的数据项组织成一个整体,它们在内存中占用同一段内存单元。,10.5 共用体,1.共用体类型的定义,10(242-282)P41 fyy_Embed_20.jpg,图10-20 共用体变量在内存中存储情况示意图 2.共用体变量 1)在程序执行的某一时刻,只有一个共用体成员起作用,而其他的成员不起作用。 2)两个具有相同共用体类型的变量可以互相赋值。 3)可以对共用体变量进行取地址运算。,10.5 共用体,实践训练 【实训项目】 1.实训内容 2

13、.解决方案,10(242-282)P41 fyy_Embed_21.png,图10-21 程序prac10_5_1.c运行结果 3.项目分析,10.5 共用体,10(242-282)P41 fyy_Embed_22.jpg,图10-22 共用体变量un1存储情况示意图,10.6 综合实训,【综合实训】 1.实训内容 1)插入一个学生信息(请输入“1”) 2)删除指定位置的学生信息(请输入“2”) 3)根据学生学号删除学生信息(请输入“3”) 4)根据学生学号修改学生信息(请输入“4”) 5)统计当前有多少学生(请输入“5”) 6)输出全部学生信息(请输入“6”) 7)重新显示菜单(请输入“7”

14、) 8)退出系统(请输入“8”) 2.解决方案,10.6 综合实训,10(242-282)P41 fyy_Embed_23.png,图10-23 程序prac10_6_1.c运行结果,习 题,一、选择题 1.以下程序的输出结果是( )。 2.设有如下定义: 3.若有以下程序: 4.若已建立下面的链表结构,指针p、s分别指向图中所示节点,则不能将s所指的节点插入到链表末尾的语句组是( )。,10(242-282)P41 fyy_Embed_24.jpg,5.根据以下定义: 6.下面程序的输出结果是( )。,习 题,7.已知数组的第0个元素在低位,则以下程序的输出结果是( )。 8.以下程序的输出

15、结果是( )。 9.以下程序的输出结果是( )。 10.以下程序的输出结果是( )。 二、填空题 1.在C语言中,要定义一个结构体类型,必须使用关键字 。 2.在C语言中,使几个不同的变量共占同一段内存的结构称为 。 3.以下程序的输出结果为 。 4.以下程序的输出结果为 。 5.已知: 三、编程题,习 题,1.定义一个结构体类型,包含年、月、日三个成员,然后从键盘接收数据动态创建链表,当输入0时结束输入,然后按照“yyyy年mm月dd日”的形式输出链表中所有的日期。 2.输入学生的学号、姓名和成绩建立链表,然后按照成绩的降序输出所有的学生信息。 3.将一个链表按照逆序排列,即将链表进行翻转。,

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

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

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