资源描述:
《C语言初级教程课件-第8章 结构体与共用体.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第8章结构体与共用体C语言大学实用教程1本章内容结构体(结构structure)、共用体(联合union)类型的定义结构体变量、结构体数组结构体变量、结构体数组与指针、函数的关系用结构体实现动态数据结构链表的概念及操作原理从基本数据类型到抽象数据类型二进制数在早期的机器指令及汇编语言中,数据对象均用二进制数表示,没有类型的概念基本数据类型在高级语言中引入了基本数据类型:整型、实型、字符型等基本数据类型不能方便的解决所有问题,有些语言(如PL/1)中试图规定较多的类型,如数组、树、栈等,但实践证明不是个好办法用户自己构造数据类型-复合数据类型表示复杂的数据对象,典型的代表就是“结构体”,数组、指
2、针也可算作此类抽象数据类型(AbstractDataType,简称ADT)在复合数据类型基础上增加了对数据的操作类——跨时代的进步例如汽车就是一种ADT思考一个问题在程序里表示一个人(姓名、年龄、性别、……),怎么表示?想表示多个人呢?如何用计算机程序实现下述表格的管理?表8-1某学校学生成绩管理表学号姓名性别入学时间计算机原理英语数学音乐1令狐冲男1999908372822林平之男1999789288783岳灵珊女1999897298664任莹莹女1999789587905……6……数组的解决方法intstudentId[30];/*最多可以管理30个学生,每个学生的学号用数组的下标表示*/
3、charstudentName[30][10];charstudentSex[30][2];inttimeOfEnter[30];/*入学时间用int表示*/intscoreComputer[30];/*计算机原理课的成绩*/intscoreEnglish[30];/*英语课的成绩*/intscoreMath[30];/*数学课的成绩*/intscoreMusic[30];/*音乐课的成绩*/数组的解决方法intstudentId[30]={1,2,3,4};charstudentName[30][10]={{"令狐冲"},{"林平之"},{"岳灵珊"},{"任莹莹"}};charstuden
4、tSex[30][2]={{"男"},{"男"},{"女"},{"女"}};inttimeOfEnter[30]={1999,1999,1999,1999};intscoreComputer[30]={90,78,89,78};intscoreEnglish[30]={83,92,72,95};intscoreMath[30]={72,88,98,87};intscoreMusic[30]={82,78,66,90};数组的解决方法数据的内存管理方式90788978……83927295……72889887……82786690……1234……令狐冲林平之岳灵珊任莹莹……男男女女……1999199
5、919991999……数组的解决方法分配内存不集中,寻址效率不高对数组进行赋初值时,容易发生错位结构显得比较零散,不容易管理希望的内存分配图1令狐冲男1999908372822林平之男1999789288783岳灵珊女1999897298664任莹莹女199978958790结构体的解决方法structSTUDENT{intstudentID;/*每个学生的序号*/charstudentName[10];/*每个学生的姓名*/charstudentSex[4];/*每个学生的性别*/inttimeOfEnter;/*每个学生的入学时间*/intscoreComputer;/*每个学生的计算机原
6、理成绩*/intscoreEnglish;/*每个学生的英语成绩*/intscoreMath;/*每个学生的数学成绩*/intscoreMusic;/*每个学生的音乐成绩*/};structSTUDENT是一个类型structSTUDENTstudents[4];students[0].studentName,students[0].Sex它们都是变量,一般称为结构的成员变量用户自定义的数据类型结构体:把关系紧密且逻辑相关的多种不同类型的变量组织到统一的名字之下,也称复合数据类型这种类型的变量占用相邻的一段内存单元共用体:把情形互斥但又逻辑相关的多种不同类型的变量组织在一起这种类型的变量占用同
7、一段内存单元,因此每一时刻只有一个数据起作用10010LiFunM1887.5Beijingnumnamesexagescoreaddrstructstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};structuredefinition形成一个样板,用于生成结构体变量。一般形式:struct结构体名{类型关键字