C语言第11章结构类型及其他构造类型.ppt

上传人:牧羊曲112 文档编号:5426473 上传时间:2023-07-05 格式:PPT 页数:45 大小:226.49KB
返回 下载 相关 举报
C语言第11章结构类型及其他构造类型.ppt_第1页
第1页 / 共45页
C语言第11章结构类型及其他构造类型.ppt_第2页
第2页 / 共45页
C语言第11章结构类型及其他构造类型.ppt_第3页
第3页 / 共45页
C语言第11章结构类型及其他构造类型.ppt_第4页
第4页 / 共45页
C语言第11章结构类型及其他构造类型.ppt_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《C语言第11章结构类型及其他构造类型.ppt》由会员分享,可在线阅读,更多相关《C语言第11章结构类型及其他构造类型.ppt(45页珍藏版)》请在三一办公上搜索。

1、第十一章 结构类型及其他构造类型,本章学习内容,本章首先介绍了结构体类型和结构体类型变量和结构体类型数组的定义与使用方法。然后,介绍了指向结构体类型数据的指针的使用方法。最后,介绍了静态链表和动态链表。并通过设计一个学生信息管理系统具体介绍了对动态链表进行新建、插入结点、删除结点、添加结点以及查询等操作的程序设计。,本章学习目的,使学生学会声明结构体类型和定义结构体类型变量与结构体数组变量的方法,掌握指向结构体类型数据的指针的使用方法。掌握动态链表的基本概念,并能设计程序对动态链表进行新建、插入结点、删除结点、添加结点以及查询等操作。,本章学习重点和难点,重点和难点:1结构体数组的程序设计。2

2、动态链表的程序设计。,第十一章 结构类型及其他构造类型,11.1 结构类型11.2 定义结构体类型变量的方法11.3 结构体变量的引用11.4 结构体变量的初始化11.5 指针数组,11.1 结构类型,声明一个结构体类型的一般形式:struct 结构体名 成员列表;其中,结构体名用做结构体类型的标志。成员类型声明的一般形式:类型名 成员名;,11.1 结构类型,则一般形式为:struct 结构体名 类型名 成员名1;类型名 成员名2;类型名 成员名n;,11.1 结构类型,例如:struct studentint num;char name20;char sex;int age;float s

3、core;char addr30;,11.2 定义结构体类型变量的方法,1先声明结构体类型再定义变量名,11.2 定义结构体类型变量的方法,一般形式:结构体类型 变量列表;,11.2 定义结构体类型变量的方法,2在声明结构体类型的同时定义变量 struct 结构体名 成员列表变量列表;,11.2 定义结构体类型变量的方法,3直接定义结构体类型变量一般形式:struct 成员列表 变量列表;,11.2 定义结构体类型变量的方法,说明:(1)类型与变量是不同的2个概念。只能对变量赋值、存取或运算,而不能对一个类型赋值、存取或运算。在编译时,对类型是不分配空间的,只对变量分配空间。(2)对结构体中的

4、成员(即“域”或称为“字段”),可以单独使用,它的作用与地位相当于简单变量。(3)成员也可以是一个结构体变量。(4)成员名可以与程序中的变量名相同,二者不代表同一对象。例如程序中可以另定义一个变量num,它与struct student中的sum是两回事,互不干扰。,11.3 结构体变量的引用,定义了结构体变量后,就可以引用这个变量,但应遵循以下规则:(1)不能将一个结构体变量作为一个整体进行输入和输出。只能对结构体变量中的各个成员分别进行输入和输出。,11.3 结构体变量的引用,(2)如果成员本身又属于一个结构体类型,则要用若干个成员运算符,一级一级地找到最低一级的成员。只能对最低一级的成员

5、进行赋值、存取或运算。,11.3 结构体变量的引用,(3)对结构体变量的成员可以象简单变量一样进行各种运算,即根据类型决定可以进行的运算。,11.3 结构体变量的引用,(4)可以引用结构体变量成员的地址,也可以引用结构体变量的地址。,11.4 结构体变量的初始化,例1 对结构体变量初始化。,11.5 结构体数组,定义结构体数组 初始化结构体数组,定义结构体数组,结构体数组每一个数组元素都是一个结构体类型的数据,它们都分别包括各个成员项。,初始化结构体数组,与其他类型的数组一样,对价格数组可以初始化。如:struct student int num;char name20;char sex;in

6、t age;float score;char add30;stu3=10101,Li Lin,M,18,87.5,103 Beijing Road,10102,Zhang Fen,M,19,99,130 Shanghai Road,10104,Wang Min,F,20,78.5,1010 Zhongshan Road;,11.6 指向结构体类型数据的指针,指向结构体变量的指针11.6.2 指向结构体类数组的指针11.6.3 用结构体变量和指向结构体的指 针作函数的参数,11.6 指向结构体类型数据的指针,结构体变量的指针一个指针结构体变量的指针,就是该变量所占据的起始地址。,11.6 指向结

7、构体类型数据的指针,可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。指针变量也可以用来指向结构体数组中的元素。,指向结构体变量的指针,例1 指向结构体变量的指针应用。,指向结构体变量的指针,以下3种形式是等价的:(1)结构体变量.成员名(2)(*p).成员名(2)p-.成员名其中,-称为指向运算符。,11.6.2 指向结构体类数组的指针,例2 指向结构体类数组的指针应用。,11.6.3 用结构体变量和指向结构体的指针作函数的参数,将一个结构体变量的值传递给另一个函数,有3种方法:(1)用结构体变量的成员作参数。属于“传值”。(2)用结构体变量作实参。属于“

8、传值”。(3)用指向结构体变量或数组的指针作实参。属于“传地址”。,11.6.3 用结构体变量和指向结构体的指针作函数的参数,例3 有一个结构体变量stu,内含学生学号、姓名和3门课程的成绩。要求在main函数中赋值,在另一个函数print中将它们打印输出。,11.6.3 用结构体变量和指向结构体的指针作函数的参数,例4 使用指向结构体变量的指针作实参,完成上例。,11.7 用指针处理链表,11.7.1 链表概述11.7.2 简单链表11.7.3 处理动态链表所需的函数11.7.4 建立动态链表11.7.5 输出链表11.7.6 对链表的删除操作11.7.7 对链表的插入操作11.7.8 对链

9、表的综合操作,11.7.1 链表概述,链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。,11.7.2 简单链表,下面通过一个例子来说明如何建立和输出一个简单链表。例1 建立一个上图所示的简单链表,它由3个学生数据的结点组成。输出各结点中的数据。,11.7.2 简单链表,例中所有结点都是在程序中定义的,不是临时开辟的单元,也不能用完后释放空间,这种链表称为静态链表。,11.7.3 处理动态链表所需的函数,如何使链表结构动态的分配存储单元,在需要时才开辟一个结点的存储单元?怎样动态开辟和释放存储单元呢?C语言编译系统的库函数提供了以下有关函数。,11.7.3 处理动态链表所需的函

10、数,1malloc函数函数原型为:void*malloc(unsigned int size);功能:在内存的动态存储区中分配一个长度为size的连续空间。函数的值是一个指向分配域起始地址的指针,类型为void。如果函数未能成功执行,例如内存空间不足,则返回空指针NULL。,11.7.3 处理动态链表所需的函数,2calloc函数函数原型为:void*calloc(unsigned n,unsingned size);功能:在内存的动态存储区中分配n个长度为size的连续空间。函数返回一个指向分配域起始地址的指针,类型为void。如果分配不成功,则返回空指针NULL。,11.7.3 处理动态链

11、表所需的函数,3free函数函数原型为:void*free(void*p);功能:释放由p执行行的内存区,使这部分内存区能被其他变量使用。P是最近一次调用calloc或malloc函数时返回的值。free函数无返回值。,11.7.4 建立动态链表,所谓建立动态链表是指在程序执行过程中从无到有地建立起一个链表,即一个一个地开辟结点和输入各结点数据,并建立起前后相链的关系。,11.7.5 输出链表,输出链表就是将各结点的数据依次输出。例3 编写一个输出链表的函数print。,11.7.6 对链表的删除操作,例4 编写一个删除动态链表中指定结点的函数。,11.7.7 对链表的插入操作,例5 编写一个插入结点的函数insert。设各个结点是按学号成员项num的值由小到大顺序排列的,插入一个新生结点时,要求按学号的顺序插入。,11.7.8 对链表的综合操作,例5 将以上建立、输出、删除、插入的函数组织在一个C程序中,用main作主调函数。,11.7.8 对链表的综合操作,例6 使用动态链表,编写一个学生成绩管理系统。,本章小结,1结构类型。2.结构类型的变量与数组。3.指向结构体类型数据的指针。4.动态链表。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号