[理学]第8章-结构体与共用体PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一般形式:
struct student
struct 结构体名
2021/2/25
C语言大学实用教程课件 制作人 孙勇
5
数组的解决方法
int char
char int int int int int
studentId[30] = {1,2,3,4,5,6}; studentName[10][30] = {{"令狐冲"},{"林平之"},
{"岳灵珊"},{"任莹莹"}}; studentSex[2][30] = {{"男"},{"男"},{"女"},{"女"}}; timeOfEnter[30] = {1999,1999,1999,1999}; scoreComputer[30] = {90,78,89,78}; scoreEnglish[30] = {83,92,72,95}; scoreMath[30] = {72,88,98,87}; scoreMusic[30] = {82,78,66,90};
int scoreMusic;
/*每个学生的音乐成绩*/
};
– struct STUDENT是一个类型
struct STUDENT students[4];
students[0].studentName students[0].Sex
– 它们都是变量,一般称为结构的成员变量
2021/2/25
C语言大学实用教程课件 制作人 孙勇
2 林平之
男 1999
78 92 88 78
3 岳灵珊
女 1999
89 72 98 66
4 任莹莹
女 1999
78 95 87 90
2021/2/25
C语言大学实用教程课件 制作人 孙勇
9
结构体的解决方法
struct STUDENT
{ int studentID;
/*每个学生的序号*/
char studentName[10];/*每个学生的姓名*/
1999 1999 1999 1999 ……
82 78 66 90 ……
7
数组的解决方法
分配内存不集中,寻址效率不高 对数组进行赋初值时,容易发生错位 结构显得比较零散,不容易管理
2021/2/25
C语言大学实用教程课件 制作人 孙勇
8
希望的内存分配图
1 令狐冲
男 1999
90 83 72 82
char studentSex[4]; /*每个学生的性别*/
int timeOfEnter; /*每个学生的入学时间*/
int scoreComputer; /*每个学生的计算机原理成绩*/
int scoreEnglish; /*每个学生的英语成绩*/
int scoreMath;
/*每个学生的数学成绩*/
3
思考一个问题
在程序里表示一个人(姓名、年龄、性别、……), 怎么表示? 想表示多个人呢? 如何用计算机程序实现下述表格的管理?
表8-1 某学校学生成绩管理表
学号 姓名 性别 入学时间 计算机原理 英 语
1 令狐冲 男 1999
90
83
2 林平之 男 1999
78
92
3 岳灵珊 女 1999
89
72
2021/2/25
C语言大学实用教程课件 制作人 孙勇
6
数组的解决方法
数据的内存管理方式
1
2 3 4 ……
90 78 89 78 ……
2021/2/25
令狐冲 林平之 岳灵珊 任莹莹 ……
83 92 72 95 ……
男 男 女 女 ……
72 88 98 87 ……
C语言大学实用教程课件 制作人 孙勇
用户自己构造数据类型-复合数据类型 –表示复杂的数据对象,典型的代表就是“结构体”,数组、指针
也可算作此类
抽象数据类型(Abstract Data Type,简称ADT)
–在复合数据类型基础上增加了对数据的操作 –类——跨时代的进步 –例如汽车就是一种ADT
2021/2/25
C语言大学实用教程课件 制作人 孙勇
10
用户自定义的数据类型
结构体: – 把关系紧密且逻辑相关的多种不同类型的变量组织到
统一的名字之下,也称复合数据类型
– 这种类型的变量占用相邻的一段内存单元 共用体: – 把情形互斥但又逻辑相关的多种不同类型的变量组织
在一起
– 这种类型的变量占用同一段内存单元,因此每一时刻
只有一个数据起作用
2021/2/25
第8章 结构体与共用体
孙勇
sunyong_cug@yahoo.com
本章内容
结构体(结构structure) 、共用体(联合union) 类型的定义 结构体变量、结构体数组 结构体变量、结构体数组与指针、函数的关系 用结构体实现动态数据结构 链表的概念及操作原理
2021/2/25
C语言大学实用教程课件 制作人 孙勇
4 任莹莹 女 1999
78
95
数学 72 88 98 87
5 ……
音乐 82 78 66 90
6 ……
2021/2/25
C语言大学实用教程课件 制作人 孙勇
4
数组的解决方法
int studentId[30]; /* 最多可以管理30个学生, 每个 学生的学号用数组的下标表示*/
char studentName[10][30]; char studentSex[2][30]; int timeOfEnter[30]; /*入学时间用int表示*/ int scoreComputer[30];/*计算机原理课的成绩*/ int scoreEnglish[30]; /*英语课的成绩*/ int scoreMath[30]; /*数学课的成绩*/ int scoreMusic[30]; /*音乐课的成绩*/
C语言大学实用教程课件 制作人 孙勇
11
结构体的定义
num name sex age score addr 10010 LiFun M 18 87.5 Beijing
structure definition形成一个样板,用于生成结构体变量。
构成结构体的变量称为结构体的成员(member), ቤተ መጻሕፍቲ ባይዱ称元素(element)或域(filed)
2
从基本数据类型到抽象数据类型
二进制数 – 在早期的机器指令及汇编语言中,数据对象均用二进制数表示,
没有类型的概念
基本数据类型 –在高级语言中引入了基本数据类型:整型、实型、字符型等 –基本数据类型不能方便的解决所有问题,有些语言(如PL/1)中
试图规定较多的类型,如数组、树、栈等,但实践证明不是个好 办法