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

上传人:max****ui 文档编号:6334237 上传时间:2020-02-23 格式:PPT 页数:45 大小:328.31KB
返回 下载 相关 举报
C语言第11章结构类型及其他构造类型.ppt_第1页
第1页 / 共45页
C语言第11章结构类型及其他构造类型.ppt_第2页
第2页 / 共45页
C语言第11章结构类型及其他构造类型.ppt_第3页
第3页 / 共45页
点击查看更多>>
资源描述
第十一章结构类型及其他构造类型 本章学习内容 本章首先介绍了结构体类型和结构体类型变量和结构体类型数组的定义与使用方法 然后 介绍了指向结构体类型数据的指针的使用方法 最后 介绍了静态链表和动态链表 并通过设计一个学生信息管理系统具体介绍了对动态链表进行新建 插入结点 删除结点 添加结点以及查询等操作的程序设计 本章学习目的 使学生学会声明结构体类型和定义结构体类型变量与结构体数组变量的方法 掌握指向结构体类型数据的指针的使用方法 掌握动态链表的基本概念 并能设计程序对动态链表进行新建 插入结点 删除结点 添加结点以及查询等操作 本章学习重点和难点 重点和难点 1 结构体数组的程序设计 2 动态链表的程序设计 第十一章结构类型及其他构造类型 11 1结构类型11 2定义结构体类型变量的方法11 3结构体变量的引用11 4结构体变量的初始化11 5指针数组 11 1结构类型 声明一个结构体类型的一般形式 struct结构体名 成员列表 其中 结构体名用做结构体类型的标志 成员类型声明的一般形式 类型名成员名 11 1结构类型 则一般形式为 struct结构体名 类型名成员名1 类型名成员名2 类型名成员名n 11 1结构类型 例如 structstudent intnum charname 20 charsex intage floatscore charaddr 30 11 2定义结构体类型变量的方法 1 先声明结构体类型再定义变量名 11 2定义结构体类型变量的方法 一般形式 结构体类型变量列表 11 2定义结构体类型变量的方法 2 在声明结构体类型的同时定义变量struct结构体名 成员列表 变量列表 11 2定义结构体类型变量的方法 3 直接定义结构体类型变量一般形式 struct 成员列表 变量列表 11 2定义结构体类型变量的方法 说明 1 类型与变量是不同的2个概念 只能对变量赋值 存取或运算 而不能对一个类型赋值 存取或运算 在编译时 对类型是不分配空间的 只对变量分配空间 2 对结构体中的成员 即 域 或称为 字段 可以单独使用 它的作用与地位相当于简单变量 3 成员也可以是一个结构体变量 4 成员名可以与程序中的变量名相同 二者不代表同一对象 例如程序中可以另定义一个变量num 它与structstudent中的sum是两回事 互不干扰 11 3结构体变量的引用 定义了结构体变量后 就可以引用这个变量 但应遵循以下规则 1 不能将一个结构体变量作为一个整体进行输入和输出 只能对结构体变量中的各个成员分别进行输入和输出 11 3结构体变量的引用 2 如果成员本身又属于一个结构体类型 则要用若干个成员运算符 一级一级地找到最低一级的成员 只能对最低一级的成员进行赋值 存取或运算 11 3结构体变量的引用 3 对结构体变量的成员可以象简单变量一样进行各种运算 即根据类型决定可以进行的运算 11 3结构体变量的引用 4 可以引用结构体变量成员的地址 也可以引用结构体变量的地址 11 4结构体变量的初始化 例1对结构体变量初始化 11 5结构体数组 11 5 1定义结构体数组11 5 2初始化结构体数组 11 5 1定义结构体数组 结构体数组 每一个数组元素都是一个结构体类型的数据 它们都分别包括各个成员项 11 5 2初始化结构体数组 与其他类型的数组一样 对价格数组可以初始化 如 structstudent intnum charname 20 charsex intage floatscore charadd 30 stu 3 10101 LiLin M 18 87 5 103BeijingRoad 10102 ZhangFen M 19 99 130ShanghaiRoad 10104 WangMin F 20 78 5 1010ZhongshanRoad 11 6指向结构体类型数据的指针 11 6 1指向结构体变量的指针11 6 2指向结构体类数组的指针11 6 3用结构体变量和指向结构体的指针作函数的参数 11 6指向结构体类型数据的指针 结构体变量的指针 一个指针结构体变量的指针 就是该变量所占据的起始地址 11 6指向结构体类型数据的指针 可以设一个指针变量 用来指向一个结构体变量 此时该指针变量的值是结构体变量的起始地址 指针变量也可以用来指向结构体数组中的元素 11 6 1指向结构体变量的指针 例1指向结构体变量的指针应用 11 6 1指向结构体变量的指针 以下3种形式是等价的 1 结构体变量 成员名 2 p 成员名 2 p 成员名其中 称为指向运算符 11 6 2指向结构体类数组的指针 例2指向结构体类数组的指针应用 11 6 3用结构体变量和指向结构体的指针作函数的参数 将一个结构体变量的值传递给另一个函数 有3种方法 1 用结构体变量的成员作参数 属于 传值 2 用结构体变量作实参 属于 传值 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对链表的综合操作 11 7 1链表概述 链表是一种常见的重要的数据结构 它是动态地进行存储分配的一种结构 11 7 2简单链表 下面通过一个例子来说明如何建立和输出一个简单链表 例1建立一个上图所示的简单链表 它由3个学生数据的结点组成 输出各结点中的数据 11 7 2简单链表 例中所有结点都是在程序中定义的 不是临时开辟的单元 也不能用完后释放空间 这种链表称为静态链表 11 7 3处理动态链表所需的函数 如何使链表结构动态的分配存储单元 在需要时才开辟一个结点的存储单元 怎样动态开辟和释放存储单元呢 C语言编译系统的库函数提供了以下有关函数 11 7 3处理动态链表所需的函数 1 malloc函数函数原型为 void malloc unsignedintsize 功能 在内存的动态存储区中分配一个长度为size的连续空间 函数的值是一个指向分配域起始地址的指针 类型为void 如果函数未能成功执行 例如内存空间不足 则返回空指针NULL 11 7 3处理动态链表所需的函数 2 calloc函数函数原型为 void calloc unsignedn unsingnedsize 功能 在内存的动态存储区中分配n个长度为size的连续空间 函数返回一个指向分配域起始地址的指针 类型为void 如果分配不成功 则返回空指针NULL 11 7 3处理动态链表所需的函数 3 free函数函数原型为 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 动态链表
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!