c语言课件 第11章_结构体

上传人:仙*** 文档编号:244388568 上传时间:2024-10-04 格式:PPT 页数:28 大小:268KB
返回 下载 相关 举报
c语言课件 第11章_结构体_第1页
第1页 / 共28页
c语言课件 第11章_结构体_第2页
第2页 / 共28页
c语言课件 第11章_结构体_第3页
第3页 / 共28页
点击查看更多>>
资源描述
,Edit Master title,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,C,语言程序设计,(第三版),理学院计算中心结凤克,第十一章,结构体与共用体,本章重点,结构体的概念,结构体的定义和引用,结构体数组,主要内容,11.1,概述,11.2,定义结构体类型变量的方法,11.3,结构体变量的引用,11.4,结构体变量的初始化,11.5,结构体数组,11.1,概述,问题定义:,有时需要将不同类型的数据组合成一个有机,的整体,以便于引用。,如:,一个学生有学号,/,姓名,/,性别,/,年龄,/,地址等属性,int,num;char name20;char sex;,int,age;char addr30;,应当把它们组织成一个组合项,在一个组合,项中包含若干个类型不同(当然也可以相同),的数据项。,图,11-1,100101 Li Fun M 18 87.5 Beijing,Num name sex age score,addr,11.1,概述,声明一个结构体类型的一般形式为:,struct,结构体名,成员表列,;,如:,struct,student,int,num;,char,name20;,char,sex;,int,age;,float,score;,char,addr30;,;,类型名,成员名,11.2,定义结构体类型变量的方法,可以采取以下,3,种方法定义结构体类型变量:,(1),先声明结构体类型再定义变量名,例如:,struct,student,student1,student2,;,|,结构体类型名 结构体变量名,定义了,student1,和,student2,为,struct,student,类型的变量,即它们具有,struct,student,类型的结构,.,11.2,定义结构体类型变量的方法,在定义了结构体变量后,编译时系统会为之分配内存单元。,例如,:,student1,和,student2,在内存中各占,59,个字节(,2+20+1+2+4+30=59,)。,图,11-2,student1,1001,ZhangXin,M 19 90.5 Shanghai,1001,WangLi,F 20 98 Beijing,student2,11.2,定义结构体类型变量的方法,(2),在声明类型的同时定义变量,这种形式的定义的一般形式为,:,struct,结构体名,成员表列,变量名表列;,11.2,定义结构体类型变量的方法,例如:,struct,student,int,num,;,char,name20,;,char,sex,;,int,age,;,float,score,;,char,addr30,;,student1,student2;,11.2,定义结构体类型变量的方法,(3),直接定义结构体类型变量,其一般形式为,:,struct,成员表列,变量名表列;,即不出现结构体名。,注意:,(1),类型与变量是不同的概念,不要混同。只能对变量赋值、存取或运算,而不能对一个类型赋值、存取或运算。在编译时,对类型是不分配空间的,只对变量分配空间。,注意:,(2),成员也可以是一个结构体变量。,struct,student,int,num,;,char,name20,;,char,sex,;,int,age,;,float,score,;,struct,date,birthday,;,/*birthday,是,struct,date,类型*,/,char,addr30,;,student1,student2;,11.2,定义结构体类型变量的方法,先声明一个,struct,date,类型,它代表“日期”,包括,3,个成员:,year,(年)、,month,(,月)、,day,(,日)。然后在声明,struct,student,类型时,将成员,birthday,指定为,struct,date,类型。,图,11-3,birthday,addr,Num name sex age,year month day,11.3,结构体变量的引用,在定义了结构体变量以后,当然可以引用这个变量。但应遵守以下规则,:,(1),不能将一个结构体变量作为一个整体进行输入和输出。,例如,:,已定义,student1,和,student2,为结构体变量并且它们已有值。,printf(%d,%s,%c,%d,%f,%,n,student1);,11.3,结构体变量的引用,引用结构体变量中成员的方式为,结构体变量名,.,成员名,例如,,student1.num,表示,student1,变量中的,num,成员,即,student1,的,num(,学号,),项。可以对变量的成员赋值。,student1.num=10010,11.3,结构体变量的引用,(2),如果成员本身又属一个结构体类型,则要用若干个成员运算符,一级一级地找到最低的一级的成员。只能对最低级的成员进行赋值或存取以及运算。,例如,:,对上面定义的结构体变量,student1,可以这样访问各成员,:,student1.num,student1.birthday.month,注意:,不能用,student1.birthday,来访问,student1,变量中的成员,birthday,因为,birthday,本身是一个结构体变量。,11.3,结构体变量的引用,(3),对结构体变量的成员可以像普通变量一样进行各种运算(根据其类型决定可以进行的运算)。,例如:,student2.score=student1.score;,sum=student1.score+student2.score;,student1.age+;,+student2.age;,由于“”运算符的优先级最高,因此是对进行自加运算,而不是先对进行自加运算。,11.3,结构体变量的引用,(4),可以引用结构体变量成员的地址,也可以引用结构体变量的地址。,例如:,scanf(%d,,,(,输入,student1.num,的值),printf(%o,,,student1,);,(,输出,student1,的首地址),11.3,结构体变量的引用,(,5,)可以对结构体变量进行整体赋值。,例如:,struct,student stu1,stu2;,stu2=stu1;,11.,结构体变量的初始化,但不能用以下语句整体读入结构体变量,,例如:,scanf,(,%d,,,s,,,c,,,d,,,f,,,s,,,student1,);,结构体变量的地址主要用作函数参数,传递结构体变量的地址。,例,11.1,对结构体变量初始化,.,#include void main,(),struct,student,long,int,num,;,char name20;char sex,;,char addr20,;,a=10101,,,LiLin,,,M,,,123 Beijing Road,;,/*,对结构体变量,a,赋初值*,/,printf(No.:%ld,nname:%s,nsex:%c,naddress:%s,n,,,a.num,,,a.name,,,a.sex,,,a.addr,);,运行结果:,No.,:,10101,name,:,LiLin,sex,:,address,:,123 Beijing Road,struct,student,long,int,num;,char name20;,char sex;,char addr20;,a=1,lili,m,123hao;,main(),printf(%ld%s%c%s,a.num,a.name,a.sex,a.addr,);,struct,date,int,year;,int,month;,int,day;,struct,student,long,int,num;,char name 20;,char sex;,char addr20;,struct,date birthday;,a=1,li,m,01hao,2007,3,5;,11.5,结构体数组,11.5.1,定义结构体数组,和定义结构体变量的方法相仿,只需说明其为数组即可。,例如:,struct,student,int,num;char name20;,char,sex;int,age;,float score;char addr30;,;,struct,student qidui105;,11.5,结构体数组,也可以直接定义一个结构体数组,,例如:,struct,student,int,num;,stu3;,图,11-4,strcut,int,num;,stu3;,11.5,结构体数组,11.5.2,结构体数组的初始化,与其他类型的数组一样,对结构体数组可以初始化。,例如:,struct,student,int,num;char name20,;,char sex,;,int,age,;,float score;char addr30,;,stu,2,10101,,,LiLin,,,M,,,18,,,87.5,,,103,BeijingRoad,,,10102,,,Zhang Fun,,,M,,,19,,,99,,,130 Shanghai Road,;,图,11-5,11.5,结构体数组,当然,数组的初始化也可以用以下形式:,struct,student,int,num,;,;,struct,student,str,=,;,即先声明结构体类型,然后定义数组为该结构体类型,在定义数组时初始化。,11.5,结构体数组,11.5.3,结构体数组应用举例,例,11.2,一旅七队选演员,,设有,3,个候选人,每次输入一个得票的候选人的名字,要求最后输出各人得票结果。,struct,person,char name20;in count;actor3=,“,yongqiang,”,0,“,dongyi,”,0 ,“,chenyi,”,0;,例,11.2,void main(),int,i,j;char actor_name20;for(i=1;i=105;i+),gets(actor_name,);for(j=0;j3;j+),if(strcmp(actor_name,actorj.name,)=0),actorj.count,+;,printf(,“,n,”,);for(i=0;i3;i+),printf(,“,%s:%dn,”,actori.name,actori.count,);,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!