C语言第10章结构体

上传人:小*** 文档编号:243135686 上传时间:2024-09-16 格式:PPT 页数:45 大小:350.50KB
返回 下载 相关 举报
C语言第10章结构体_第1页
第1页 / 共45页
C语言第10章结构体_第2页
第2页 / 共45页
C语言第10章结构体_第3页
第3页 / 共45页
点击查看更多>>
资源描述
第十章 结构体与共用体,10.1,结构体及其类型定义,数组, 同种数据类型的集合,实际问题中,:存在不同类型的数据构成的集合。,例,:建立学生档案,每一个学生,:学号,(int num),姓名(,char name20),性别(,char sex),年龄(,int age),成绩,(float score),地址,(char addr30),可将上述数据的集合定义为一种结构体类型:,struct student, int num;,char name20;,char sex;,int age;,float score;,char addr30;,上述定义中,:,struct ,关键词(保留字), 表示定义一种结构体类型。,其一般形式:,struct,结构体名,成员表列;,成员表列:类型标识符 成员名,以上仅说明了定义一种类型的方法,尚未定义变量。,strudent,结构体名, 相当于类型名(,int, float,等),10.2,定义结构体变量,一、先定义结构体类型再定义结构体变量,有时为简化,可用宏定义:,#define STUDENT struct student,则定义,x,1, x,2,可简化成:,STUDENT x,1, x,2,;,三种方法:,例,:,struct student x,1, x,2,;,则,x,1, x,2,为,student,型变量,,x,1, x,2,可存放,student,数据。,struct student,int num;,char name20;,char sex;,int age;,float addr30;, x1, x2;,一般形式,struct,结构体名,成员表列,变量名表列;,二、 在定义结构体类型的同时定义变量,:,一般形式,struct,成员表列 变量名表列;,即不出现结构体类型名,几点说明,1.,类型名与变量名是不同的概念,2.,允许成员名又为另一个已定义的结构型变量,3.,每一个成员地位如同该类型的变量,4.,成员名与程序中的变量名可相同但意义不同,三、直接定义结构类型变量,struct date, int month;,int day;,int year;,一个嵌套定义的例子:,struct student,int num;,char name20;,char sex;,int age;,struct date birthday;,char addr30;, x,1, x,2,;,x,1,或,x2,num,name,sex,age,birthday,month,day,year,addr,10.3,结构体类型变量的引用,引用结构体变量实质上为引用其成员,用分量运算符.优先级最高,如,:,x,1,为,student,型变量,则,x,1,.num:,表示,x,1,的学号,x,1,.name:,表示,x,1,的名字,x,1,.birthday.day:,表示,x,1,的出生日,1.,只能用成员,不可用结构体变量名直接运算,2.,每一个分量的引用与其同类型的简单变量的引用相同。,10.4,结构体变量的初始化,struct student x1=8906, Li Ming , M,25, 8, 3, 1928, Yu,Lushan,123 ,与其它变量的初始化完全一样,结构体变量在定义时可初始化:,10.5,结构体数组,同数组定义类似,:,struct student w3;,则有三个元素,w0, w1, w2.,每一个元素为一个结构,student,型变量。,w0.num:,表示,w0,的学号,w1.name:,表示,w1,的姓名,对,w,数组也可初始化,:,struct student w3=8901, Li Ming , , , ;,可省略大小说明,直接用赋初值确定其大小,struct student w =, ,;,struct person, char name20;,int count;, leader3=Li, o,Zhang , o, Fang , o;,例,:,有三个侯选人,每一侯选人的数据包括其姓名和得票数,则可定义结构类型,person,和结构数组,leader,程序如下:,struet,person, char name20;,int count;, leader3=Li, 0,Zhang , 0, Fang , 0,;,main ( ),int i, j;,chr,leader_name20;,for (i=1; i=10; i+),scanf,(%s, leader_name);,for (j=0; j3; j+),if (,strcmp,(leader_name, leaderj.name)= =0) leaderj.count+;,printf,(n);,for (i=0; i3; i+),printf(%5s: %dn, leaderi.name, leaderi.count);,运行情况如下:,Li,Li,Fun,Zhang,Zhang,Fun,Li,Fun,Zhang,Li ,count,name,Li,Zhang,Fun,0,0,0,Li : 4,Zhang : 3,Fun : 3,10.6,结构指针,一个结构型变量(如,x,1,),也有一个起始地址称为结构指针。,则,p,为指针变量,它可用来存放,student,型变量的地址,num,name,Addr,p,x,1,令,p=&x,1,;,一、将结构指针存贮一个变量中结构指针变量,如,:,struct student,p;,则,p,为,x,1,的首地址.,(,p).name,(,p).score,或者用“,”,运算符,,p num, pname, p score.,称,为指向运算符,“,”,优先级高于,+,,, 。,则:,p,num+1(x,1,.num)+,+,p,num +(x,1,.num),先使用,x,1,.num,再加1,先使,x,1,.num,加,1,,再用,x,1,.num,访问,x,1,的成员:,总结上述情况,引用结构变量中的成员有三种方法:,(2),用指针变量,(,p).,成员名 (,p).num,(3),用指向运算符,成员名,p num,(1),结构体变量名,.,成员名,x1.num,例,:,struct student, int num;,char name20;,char sex;,int age;,;,二、指向结构体数组的指针,与其他指向结构体数组的指针一样,可用指针指向结构体数组。,main ( ), struct student stu3=10101, Li Lin , M, , , ;,struct student,p;,p=,stu,;,while (pp,1,num)&(p,1,next!=NULL),p,2,=p,1,; p,1,=p,1,next;,if (p,0,numnum, &,stu,score);,while (,stu,num!=0),head=insert(head,stu,);,print (input the inserted record: );,stu,=(struct student * ),malloc(LEN,);,scanf(%ld, %f ,&,stu,num, &,stu,score);,运行情况如下,:,input records:,98101, 99,89103, 87,89105, 77,0, 0,Now, These 3 records are.,89101 99.0,89103 87.0,89105 77.0,input the deleted number: 98103,delete: 89103,Now, These 2 records are.,89101 99.0,89105 77.0,input the deleted number: 98105,delete: 89105,Now, These 1 records are.,89101 99.0,input the deleted number: 0,input the inserted record: 89104, 87,Now, These 2 records are.,89101 99.0,89104 87.0,input the inserted record: 89106, 65,Now, These 3 records are.,89101 99.0,89104 87.0,89106 65.0,input the inserted record: 0, 0,Return,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


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

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


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