




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,结构体与共用体,结构体的概念及其基本操作结构体数组的使用指向结构体类型数据的指针用指针处理链表共用体,结构体的概念,前面介绍了基本数据类型整型、浮点型、字符型,也介绍了一种构造类型数组,数组中各元素是属于同一种类型。在实际生活中经常会遇到一组类型不同的相关数据,例如:一个学生的学号、姓名、性别、年龄、成绩、家庭地址等项。,应当把它们组织成一个组合项,在一个组合项中包含若干个类型不同(当然也可以相同)的数据项。,struct结构体名成员表列;其中,成员表列的格式为:类型名成员名;如:structstudentintnum;charname20;charsex;intage;floatscore;charaddr30;;,结构体名,类型名,成员名,一.结构体类型的声明,二.结构体类型变量的定义方法,可以采取以下3种方法定义结构体类型变量:(1)先声明结构体类型再定义变量名例如:structstudentstudent1,student2;结构体类型名结构体变量名定义了student1和student2为structstudent类型的变量,即它们具有structstudent类型的结构.,student1和student2在内存中各占59个字节(2+20+1+2+4+30=59)。,(2)声明类型同时定义变量。形式为:struct结构体名成员表列变量名表列;,(3)直接定义结构体类型变量。形式为:struct成员表列变量名表列;,例如:structstudentintnum;charname20;charsex;intage;floatscore;charaddr30;student1,student2;,例如:structintnum;charname20;charsex;intage;floatscore;charaddr30;student1,student2;,注意:,对结构体中的成员(即“域”),可以单独使用,它的作用与地位相当于普通变量。,成员也可以是一个结构体变量,成员名可以与程序中其他变量名相同。,类型与变量是不同的概念,不要混同。,Structdateintmonth;intday;intyear;,Structstudentintnum;structdatebirthday;charaddr30;student1;,三、结构体变量的引用,注意:不能将结构体变量作为一个整体进行输入和输出。例如:Structstudentstudent1,student2;printf(%d,%s,%c,%d,%f,%n,student1);,引用方式:结构体变量名.成员名,成员本身是结构体类型,只能对最低级的成员进行赋值等运算。例如:student1.birthday.month,结构体成员的运算和普通变量一样进行各种运算。例如:student2.score=student1.score;student1.age+;,“.”的优先级最高,错误,可以引用结构体变量成员的地址,也可以引用结构体变量的地址。例如:scanf(%d,/*结构体成员地址*/printf(%o,student1);/*结构体变量地址*/,四.结构体变量的初始化对结构体变量可以在定义时指定初始值。,例如:structstudentlongintnum;charname20;charsex;charaddr20;a=10101,LiLin,M,123BeijingRoad;,结构体数组,一个结构体变量中可以存放一组数据,如果有个学生的数据需要参加运算,显然应该用数组,这就是结构体数组。,一.结构体数组的定义和定义结构体变量的方法相似,只需说明其为数组即可。例如:structstudentintnum;charname20;charsex;intage;floatscore;charaddr30;stu3;structstudentstu13;,定义含有三个元素的结构体数组,直接定义,2.结构体数组的初始化与其他类型的数组一样,对结构体数组可以初始化。例如:structstudentintnum;charname20;charsex;intage;floatscore;charaddr30;stu210101,LiLin,M,18,87.5,103BeijingRoad,10102,ZhangFun,M,19,99,130ShanghaiRoad;,2.结构体数组的初始化与其他类型的数组一样,对结构体数组可以初始化。例如:structstudentintnum;charname20;charsex;intage;floatscore;charaddr30;stu210101,LiLin,M,18,87.5,103BeijingRoad,10102,ZhangFun,M,19,99,130ShanghaiRoad;,stu0,stu1,4.结构体数组应用举例,举例:候选人得票的统计程序。设有3个候选人,每次输入一个得票的候选人的名字,要求最后输出各人得票结果。#include#includestructpersoncharname20;incount;leader3=“Li”,0,”Zhang”,0,”Fun”,0,3.结构体数组元素的引用,结构体数组名元素下标.结构体成员名,main()inti,j;charleader_name20;for(i=1;i=10;i+)scanf(“%s”,leader_name);for(j=0;jnum!=0)n=n+1;if(n=1)head=p1;elsep2-next=p1;p2=p1;p1=(structstudent*)malloc(LEN);scanf(%ld,%f,。,3.输出链表,voidprint(structstudent*head)structstudent*p;printf(nNow,These%drecordsare:n,n);p=head;if(head!=NULL)doprintf(%ld%5.1fn,p-num,p-score);p=p-next;while(p!=NULL);,4.对链表的删除操作,删除算法,structstudent*del(structstudent*head,longnum)structstudent*p1,*p2;if(head=NULL)printf(nlistnull!n);gotoend;p1=head;while(num!=p1-num,5.链表的插入操作,对链表的插入是指将一个结点插入到一个已有的链表中。为了能做到正确插入,必须解决两个问题:怎样找到插入的位置;怎样实现插入。,算法分析,structstudent*insert(head,stud)structstudent*head,*studstructstudent*p0,*p1,*p2;p1=head;p0=stud;if(head=NULL)head=p0;p0-next=NULL;elsewhile(p0-nump1-num),共用体,使几个不同的变量共占同一段内存的结构称为“共用体”类型的结构。,union共用体名成员表列变量表列;,一.共用体的概念,二.共用体类型变量的定义形式,例如:uniondatainti;charch;floatf;;,公用体data类型变量在内存中占用4个字节的存储空间。,三.共用体类型变量的定义方法,与结构体类型变量定义相同,有三种方式:,第二种:uniondatainti;charch;floatf;a,b,c;,第一种:uniondatainti;charch;floatf;;uniondataa,b,c;,第三种:unioninti;charch;floatf;a,b,c;,四.共用体类型变量的引用方法,共用体变量名.成员名,七.共用体和结构体的比较,结构体变量所占内存长度是各成员占的内存长度之和。每个成员分别占有其自己的内存单元。共用体变量所占的内存长度等于最长的成员的长度。,同一个内存段每一瞬时只能存放一个成员,共用体变量中起作用的成员是最后一次存放的成员。共用体变量的地址和它的各成员的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中职政治 (道德与法治)部编高教版(2023)心理健康与职业生涯第12课 终身学习 持续发展一等奖教学设计
- 九年级物理下册 第九章 家庭用电 2 家庭电路教学设计 (新版)教科版
- 2024中粮粮谷营销公司校园招聘笔试参考题库附带答案详解
- 采购控制程序培训
- 妇产科护理查房记录
- 成人培训学校2025年战略计划表
- 初中语文人教部编版八年级下册12《诗经》二首综合与测试教学设计
- 六年级数学上册 六 分数混合运算第5课时 解决问题(三)教学设计 西师大版
- 九年级化学下册 第7单元 常见的酸和碱 第1节 酸及其性质 第1课时 常见的酸教学设计 (新版)鲁教版
- 人教版六年级上册1 圆的认识教案及反思
- DL-T5181-2017水电水利工程锚喷支护施工规范
- 大学校园白蚁防治方法
- 地勘安全生产承诺书
- 医院专项资金使用方案
- 水利工程运维水利工程运行和日常维修养护方案
- 理论力学简明教程(第二版)课后答案陈世民
- 2016医学机能学实验教程
- 2024年10月公务员制度自考试卷含解析
- 幼儿园课件:谷雨绘本故事-养蚕忙
- 高级审计师《审计理论与审计案例分析》真题
- 高中生班会课课件 爱情三角理论爱情的本质
评论
0/150
提交评论