《程序设计基础:C语言》10PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7
.
数组方式内存管理
1
2 3 4 ……
令狐冲 林平之 岳灵珊 任莹莹
……
男 男 女 女
……
90 78 89 78 ……
83 92 72 95 ……
72 88 98 87 ……
❖ 数组个数太多 ❖ 结构显得比较零散,不容易管理 ❖ 分配内存不集中,寻址效率不高
8
1999 1999 1999 1999 ……
普通结构体指针 结构体内的自引用指针(关系)
11
.
结构体的定义
❖ 结构体是一种自定义数据类型,结构体变量代表 的结构体类型的数据对象作为一个整体存储在内 存中。
❖ 结构体类型定义的基本语法形式为:
struct 结构体名
{ 类型关键字 成员名1; 类型关键字 成员名2;
...... 类型关键字 成员名n;
点的方法。 ❖ 掌握共用体类型定义、变量的使用。 ❖ 掌握枚举类型变量的使用。
3
.
本章授课内容
结构体 结构体对象在内存中的存储 结构体与动态链表 共用体
枚举
4
.
问题
❖ 编写学生管理系统,程序需要处理100个学生的数 据,每个学生需要存储学号、姓名、性别、入学时 间、计算机组成原理成绩、数学成绩、英语成绩、 音乐成绩。
《程序设计基础:C语言》
第十章 结构体和共用体
上一章知识复习
❖ 文件包含预处理命令#include ❖ 对象宏定义 ❖ 函数宏定义 ❖ 条件编译
2
.
本章教学目标
❖ 了解为什么需要自定义数据类型。 ❖ 掌握结构体数据类型的定义语法。 ❖ 掌握三种结构体变量定义语法。 ❖ 掌握结构体对象成员的访问方式。 ❖ 掌握结构体对象数组的定义、使用方法。 ❖ 掌握动态链表的创建、遍历、添加节点、删除节
{
char studentID[10];
/*学生的序号*/
char studentName[10];/*学生的姓名*/
char studentSex[4]; /*学生的性别*/
int timeOfEnter;
/*学生的入学时间*/
int scoreComputer; /*学生的计算机原理成绩*/
int scoreEnglish; /*学生的英语成绩*/
struct student{…}s1;
struct {…}s1,s2;
.
整体->部分{ ->
存储方▪ 式结构体整体变量的赋值和访问 部分->整体,有内存漏洞
数组 ▪ 结构体Da变ta量ty的pe内存ar分rN配ame[5] struct student stu[50];
指针
Datatype *pointer
表8-1 某学校学生成绩管理表
学号 姓名 性别 入学时间 计算机原理 英 语
1 令狐冲 男 1999
90
83
2 林平之 男 1999
78
92
3 岳灵珊 女 1999
89
72
4 任莹莹 女 1999
78
95
数学 72 88 98 87
wk.baidu.com
5 ……
6 ……
音乐 82 78 66 90
6
.
数组的解决方法
/* 最多可以管理100个学生, 每个学生的学号用数组的下标表示*/
char studentSex[4]; /*学生的性别*/
int timeOfEnter;
/*学生的入学时间*/
int scoreComputer; /*学生的计算机原理成绩*/
int scoreEnglish; /*学生的英语成绩*/
int scoreMath;
/*学生的数学成绩*/
int scoreMusic;
};
构成结构体的变量称结 构体成员(member) 也称域(filed)
struct 结构体名定 义了新的数据类型,是 一个模板,不分配内存, 用于生成结构体变量
12
.
结构体
struct student
{
char studentID[10];
/*学生的序号*/
char studentName[10];/*学生的姓名*/
❖变量的普知通识变点量 :
▪ 变量的类型 数据类▪ 型如何存固定入(和死取板出)变量的值
结构体变量 自定义(灵活)
▪ 变量的内存分配
定❖义结方式构体D是at一at种ype数据va类rNa型me
▪ 如何定义结构体类型 访问方▪ 式如何定通过义变结量构名体访变问量
struct student stu1;
char studentId[100][10]; char studentName[100][10]; char studentSex[100][2]; int timeOfEnter[100]; /*入学时间用int表示*/ int scoreComputer[100];/*计算机原理课的成绩*/ int scoreEnglish[100]; /*英语课的成绩*/ int scoreMath[100]; /*数学课的成绩*/ int scoreMusic[100]; /*音乐课的成绩*/
82 78 66 90 ……
.
如果能有这样一种方式…..
采用一个整体描述学生相关信息
1 令狐冲 男 1999
90
83
72
82
2 林平之 男 1999
78
92
88
78
3 岳灵珊 女 1999
89
72
98
66
4 任莹莹 女 1999
78
95
87
90
9
.
它有一个名字叫:结构体
struct student
/*学生的音乐成绩*/
};
❖ struct student是一个自定义的数据类型
13
.
动手练习1
❖ 请用结构体描述以下的学生信息,
出生年月
学号 姓名 性别 年龄 学分
住址
年月日
//出生日期的结构体 struct DATE {
int year; int month; int day; };
结构体定义 可以嵌套
int scoreMath;
/*学生的数学成绩*/
int scoreMusic;
/*学生的音乐成绩*/
};
❖ struct student是一个自定义的数据类型
❖ struct student s1;是一个结构体变量 ❖ struct student stu[100];是一个结构体数组
10
.
结构体
▪ 打印数学成绩和英语成绩都在90分以上的学生的信息 ▪ 按照数学成绩对这些学生进行排序 ▪ 学号为100的学生转学走了,如何删除它的信息。
▪ 如何新加一个学生,并且添加完成后学生信息按数学成 绩有序
5
.
思考
❖ 计算机如何表示一个学生的信息? ❖ 如何表示多个学生的信息? ❖ 如何用计算机处理如下表格: