苏小红******@hit.
第8章结构体与共用体
C语言大学实用教程
1
本章内容
结构体(结构structure) 、共用体(联合union)类型的定义
结构体变量、结构体数组
结构体变量、结构体数组与指针、函数的关系
用结构体实现动态数据结构
链表的概念及操作原理
从基本数据类型到抽象数据类型
二进制数
在早期的机器指令及汇编语言中,数据对象均用二进制数表示,没有类型的概念
基本数据类型
在高级语言中引入了基本数据类型:整型、实型、字符型等
基本数据类型不能方便的解决所有问题,有些语言(如PL/1)中试图规定较多的类型,如数组、树、栈等,但实践证明不是个好办法
用户自己构造数据类型-复合数据类型
表示复杂的数据对象,典型的代表就是“结构体”,数组、指针也可算作此类
抽象数据类型(Abstract Data Type,简称ADT)
在复合数据类型基础上增加了对数据的操作
类——跨时代的进步
例如汽车就是一种ADT
思考一个问题
在程序里表示一个人(姓名、年龄、性别、……),怎么表示?
想表示多个人呢?
如何用计算机程序实现下述表格的管理?
表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
……
数组的解决方法
int studentId[30]; /* 最多可以管理30个学生, 每个学生的学号用数组的下标表示*/
char studentName[10][30];
char studentSex[2][30];
int timeOfEnter[30]; /*入学时间用int表示*/
int puter[30];/*计算机原理课的成绩*/
int scoreEnglish[30]; /*英语课的成绩*/
int scoreMath[30]; /*数学课的成绩*/
int scoreMusic[30]; /*音乐课的成绩*/
数组的解决方法
int studentId[30] = {1,2,3,4,5,6};
char studentName[10][30] = {{"令狐冲"},{"林平之"},
{"岳灵珊"},{"任莹莹"}};
char studentSex[2][30] = {{"男"},{"男"},{"女"},{"女"}};
int timeOfEnter[30] = {1999,1999,1999,1999};
int puter[30] = {90,78,89,78};
int scoreEnglish[30] = {83,92,72,95};
int scoreMath[30] = {72,88,98,87};
int scoreMusic[30] = {82,78,66,90};
数组的解决方法
数据的内存管理方式
90
78
89
78
……
83
92
72
95
……
72
88
98
87
……
82
78
66
90
……
1
2
3
4
……
令狐冲
林平之
岳灵珊
任莹莹
……
男
男
女
女
……
1999
1999
1999
1999
……
数组的解决方法
分配内存不集中,寻址效率不高
对数组进行赋初值时,容易发生错位
结构显得比较零散,不容易管理
希望的内存分配图
1
令狐冲
男
1999
90
83
72
82
2
林平之
男
1999
78
92
88
78
3
岳灵珊
女
1999
89
72
98
66
4
任莹莹
女
1999
78
95
87
90
结构体的解决方法
struct STUDENT { int studentID; /*每个学生的序号*/
char studentName[10];/*每个学生的姓名*/
char studentSex[4]; /*每个学生的性别*/
int timeOfEnter; /*每个学生的入学时间*/
int puter; /*每个学生的计算机原理成绩*/
int scoreEnglish; /*每个学生的英语成绩*/
int scoreMath; /*每个学生的数学成绩*/
int scoreMusic; /*每个学生的音乐成绩*/ };
struct STUDENT是一个类
第8章 结构体与共用体 来自淘豆网m.daumloan.com转载请标明出处.