结构体与共用体.pptVIP

  • 1
  • 0
  • 约9.94千字
  • 约 45页
  • 2023-04-30 发布于广东
  • 举报
结构体与函数 向函数传递结构体的单个成员 单向值传递,函数内对结构内容的修改不影响原结构 向函数传递结构体的完整结构 单向值传递,函数内对结构内容的修改不影响原结构,开销大 向函数传递结构体的首地址 用结构体数组或者结构体指针做函数参数 除提高效率外,还可以修改结构体指针所指向的结构体的内容 8.4 结构体与函数 第三十一页,共四十五页,2022年,8月28日 例8-1 定义一个结构体存放学生学号、姓名、英语成绩、计算机成绩和数学成绩信息,计算学生各科的平均成绩和总成绩,并按平均成绩由高到低打印学生信息。班级实际人数在主函数中通过键盘读入。 要求: 通过Input函数读取数据,Input函数函数原型如下: void Input(struct student *p, int n); 通过Total1计算每个学生的总分和平均分,Total1函数函数原型如下: void Total1(struct student *p, int *psum, float *pave, int n); 通过Sort函数将每个学生按照总分由高到低排序,Soort函数函数原型如下: void Sort(struct student *p, int *psum, float *pave, int n); 通过Print函数打印学生成绩表,Print函数函数原型如下: void Print(struct student *p, int *psum, float *pave, int n); [友情提示:] 在主函数中需要申请的内存: ( struct student * ) malloc( m*sizeof( struct student ) ); ( int * ) malloc( m*sizeof( int )); ( float * )malloc( m*sizeof( float )); 8.4 结构体与函数 第三十二页,共四十五页,2022年,8月28日 /* 函该功能:该函数用于从键盘读取学生的各项数据 函数参数: struct student *p 指向存放结构体变量的第一个存储单元 变量 n 班级实际人数 返 回 值: 无 */ void Input( struct student *p, int n) { int i; for(i=0;in;i++) { scanf(%ld%s%d%d%d, (p+i)-num, (p+i)-name,(p+i)-Eng, (p+i)-Com, (p+i)-Mth ); } } 8.4 结构体与函数 第三十三页,共四十五页,2022年,8月28日 第8章 结构体与共用体 章节: 节: Slide:8- * 问题: 结构体与共用体 第一页,共四十五页,2022年,8月28日 本章内容 结构体(结构structure) 、共用体(联合union)类型的定义 结构体变量、结构体数组 结构体数组与指针 第二页,共四十五页,2022年,8月28日 第8章 结构体与共用体 8.1 问题提出 8.2 结构体 8.3 结构体数组 8.4 结构体与函数 8.5 动态数据结构 8.6 共用体 第三页,共四十五页,2022年,8月28日 从基本数据类型到抽象数据类型 二进制数 在早期的机器指令及汇编语言中,数据对象均用二进制数表示,没有类型的概念 基本数据类型 在高级语言中引入了基本数据类型:整型、实型、字符型等 基本数据类型不能方便的解决所有问题,有些语言(如PL/1)中试图规定较多的类型,如数组、树、栈等,但实践证明不是个好办法 用户自己构造数据类型-复合数据类型 表示复杂的数据对象,典型的代表就是“结构体”,数组、指针也可算作此类 抽象数据类型(Abstract Data Type,简称ADT) 在复合数据类型基础上增加了对数据的操作 类——跨时代的进步 例如汽车就是一种ADT 第四页,共四十五页,2022年,8月28日 思考一个问题 在程序里表示一个人(姓名、年龄、性别、……),怎么表示? 想表示多个人呢? 如何用计算机程序实现下述表格的管理? 表8-1 某学校学生成绩管理表 学号 姓名 性别 入学时间 计算机原理 英 语 数 学 音 乐 1 令狐冲 男 1999 90 83 72 82 2 林平之 男 1999 78 92 88 78 3 岳灵珊 女 1999 89 72 98 66 4 任莹莹 女 1999 78 95 87 90 5 … … 6 … … 8.1 问题提出 第五页,共四十五

文档评论(0)

1亿VIP精品文档

相关文档