资源描述:
《C语言第10章结构体.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十章结构体与共用体§10.1结构体及其类型定义数组–––同种数据类型的集合实际问题中:存在不同类型的数据构成的集合。例:建立学生档案每一个学生:学号(intnum)姓名(charname[20])性别(charsex)年龄(intage)成绩(floatscore)地址(charaddr[30])可将上述数据的集合定义为一种结构体类型:structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}上述定义中:struct–––关键词(保留字),表示定义一种结构体类型。其一般形式:struct结构体名{
2、成员表列};成员表列:类型标识符成员名以上仅说明了定义一种类型的方法,尚未定义变量。strudent–––结构体名,相当于类型名(int,float等)§10.2定义结构体变量一、先定义结构体类型再定义结构体变量有时为简化,可用宏定义:#defineSTUDENTstructstudent则定义x1,x2可简化成:STUDENTx1,x2;三种方法:例:structstudentx1,x2;则x1,x2为student型变量,x1,x2可存放student数据。structstudent{intnum;charname[20];charsex;intage;floataddr[30];}
3、x1,x2;一般形式struct结构体名{成员表列}变量名表列;二、在定义结构体类型的同时定义变量:一般形式struct{成员表列}变量名表列;即不出现结构体类型名几点说明1.类型名与变量名是不同的概念2.允许成员名又为另一个已定义的结构型变量3.每一个成员地位如同该类型的变量4.成员名与程序中的变量名可相同但意义不同三、直接定义结构类型变量structdate{intmonth;intday;intyear;}一个嵌套定义的例子:structstudent{intnum;charname[20];charsex;intage;structdatebirthday;charaddr[30
4、];}x1,x2;x1或x2numnamesexagebirthdaymonthdayyearaddr§10.3结构体类型变量的引用引用结构体变量实质上为引用其成员用分量运算符.优先级最高如:x1为student型变量,则x1.num:表示x1的学号x1.name:表示x1的名字x1.birthday.day:表示x1的出生日1.只能用成员,不可用结构体变量名直接运算2.每一个分量的引用与其同类型的简单变量的引用相同。§10.4结构体变量的初始化structstudentx1={8906,"LiMing",'M’,25,8,3,1928,"YuLushan123"}与其它变量的初始化完全
5、一样,结构体变量在定义时可初始化:§10.5结构体数组同数组定义类似:structstudentw[3];则有三个元素w[0],w[1],w[2].每一个元素为一个结构student型变量。w[0].num:表示w[0]的学号w[1].name:表示w[1]的姓名对w数组也可初始化:structstudentw[3]={{8901,"LiMing",…},{…},{}};可省略大小说明,直接用赋初值确定其大小structstudentw[]={{…},{…},{…}};structperson{charname[20];intcount;}leader[3]={"Li",o,"Zhang
6、",o,"Fang",o};例:有三个侯选人,每一侯选人的数据包括其姓名和得票数,则可定义结构类型person和结构数组leader程序如下:struetperson{charname[20];intcount;}leader[3]={"Li",0,"Zhang",0,"Fang",0};main(){inti,j;chrleader_name[20];for(i=1;i<=10;i++){scanf("%s",leader_name);for(j=0;j<3;j++)if(strcmp(leader_name,leader[j].name)==0)leader[j].count++;}
7、printf("");for(i=0;i<3;i++)printf("%5s:%d",leader[i].name,leader[i].count);}运行情况如下:LiLiFunZhangZhangFunLiFunZhangLicountnameLiZhangFun000Li:4Zhang:3Fun:3§10.6结构指针一个结构型变量(如x1)也有一个起始地址–––称为结构指针。则p为指针变量,它可用来