资源描述:
《c语言教程第8章 结构体》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第8章结构体结构体共用体思考一个问题在程序里表示一个人的信息(姓名、年龄、性别、……),怎么表示?表示多个人呢?如何用计算机程序实现下述表格的管理?表8-1某学校学生成绩管理表学号姓名性别入学时间计算机原理英语数学音乐1令狐冲男1999908372822林平之男1999789288783岳灵珊女1999897298664任莹莹女1999789587905……6……数组的解决方法intstudentId[30];/*最多可以管理30个学生,每个学生的学号用数组的下标表示*/charstudentN
2、ame[30][10];charstudentSex[30][2];inttimeOfEnter[30];/*入学时间用int表示*/intscoreComputer[30];/*计算机原理课的成绩*/intscoreEnglish[30];/*英语课的成绩*/intscoreMath[30];/*数学课的成绩*/intscoreMusic[30];/*音乐课的成绩*/数组的解决方法intstudentId[30]={1,2,3,4,5,6};charstudentName[30][10]={{
3、"令狐冲"},{"林平之"},{"岳灵珊"},{"任莹莹"}};charstudentSex[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,9
4、0};数组的解决方法数据的内存管理方式90788978……83927295……72889887……82786690……1234……令狐冲林平之岳灵珊任莹莹……男男女女……1999199919991999……数组的解决方法分配内存不集中,寻址效率不高对数组进行赋初值时,容易发生错位结构显得比较零散,不容易管理希望的内存分配图1令狐冲男1999908372822林平之男1999789288783岳灵珊女1999897298664任莹莹女199978958790结构体的解决方法structSTUDEN
5、T{intstudentID;/*每个学生的序号*/charstudentName[10];/*每个学生的姓名*/charstudentSex[4];/*每个学生的性别*/inttimeOfEnter;/*每个学生的入学时间*/intscoreComputer;/*每个学生的计算机原理成绩*/intscoreEnglish;/*每个学生的英语成绩*/intscoreMath;/*每个学生的数学成绩*/intscoreMusic;/*每个学生的音乐成绩*/};structSTUDENT是一个类
6、型structSTUDENTstudents[4];students[0].studentNamestudents[0].Sex它们都是变量,一般称为结构的成员变量§8.1结构体的定义结构体类型的定义结构体类型变量的引用结构体变量的初始化structstudent{intnum;charname[20];charsex;intage;charaddr[30];};是数据类型,不是变量名对各成员都要进行类型说明;成员名定名规则与变量名同。一、结构体类型的定义一般形式为:struct结构体名{成员表
7、列};方法一:先定义结构体类型再定义变量名structstudent{intnum;charname[20];charsex;intage;charaddr[30];};structstudentstudent1,student2;定义studet1和sudent2为structstudent类型变量结构体类型变量的定义有时,可用符号常量代表一个结构体类型,如:#defineSTUDENTstructstudentSTUDENT{intnum;charname[20];charsex;intag
8、e;charaddr[30];};这样,可直接用STUDENT定义变量,如:STUDENTstudent1,student2;此时,不必再写关键字struct方法二:在定义类型的同时定义变量structstudent{intnum;charname[20];charsex;intage;charaddr[30];}student1,student2;一般形式是:struct结构体名{成员列表}变量名列表;方法三:直接定义结构类型变量。其一般形式是:struct{成员表列}变量名表列;此时,不出现