已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
结构体、联合体、枚举,本章主要内容,结构体typedef联合体链表枚举(选学),结构体,在保存复杂数据内容时,比如说同时保存一个人的姓名和年龄,我们前面学过的简单数据类型无法满足要求,C语言中提供了结构体类型,用简单的数据类型,或其他已经定义的复杂类型,来构造一个结构体类型结构体的定义格式:Struct 结构体类型名 类型1 成员1; 类型2 成员2; .;,结构类型变量的声明,在C语言中声明结构体变量格式: struct 结构体类型名 变量列表在C+中声明方法和简单变量声明方法相同,格式:结构体类型名 变量列表结构体变量可以用元素值表方式进行初始化除象原来那样声明方法外,还可以直接在结构体说明的后面跟变量列表进行说明如:struct studentchar name10;int age;st1=“TOM”,20,st10,*pst=,有关结构体变量的说明,如有声明:struct studentchar name10;int age;st1,st2,*pst=指针所指单元的子元素可以使用-运算符,如(*pst).age 可以写成 pst-age结构体单元之间可以互相赋值,可用作函数参数,可以作为函数返回值,typedef,用typedef可以把一个数据类型名称定义为另外一个名称,如:typedef float real;这样以后在声明float a;变量时,也可以写做 real a;用typedef 可以把结构体类型定义成一个简短的名字,方便使用,如:typedef struct student stype;/这样就可以用stype声明变量了,结构体声明与访问举例-1,#include #include struct student int id,age; char name10; st1;struct student st2; /in c must include struct;student st3;void main() student st4,sta10,*pst; st1.id=12; strcpy(,zhangsan); sta0.id=56; pst=,结构体声明与访问举例-2,#include struct student int id,age; ;student fun(student a)a.age*=2;return a;void main() student b,c,d; b.id=1;b.age=20; c=b; d=fun(c); printf(%d,%dn,d.id,d.age); printf(%d,%dn,c.id,c.age); ,联合体,定义格式:union 类型名 包含分量引用操作方法与结构体相同不同的是联合体各分量共享分配的空间,因此同时只能使用其中一项分量系统给结构体分配的空间为结构体各分量占用空间之和,而给联合体分配的空间是组成联合体各分量占用空间的最大值,联合体举例,#include union utlong l;char c;short s;u;void main()u.l=0x88776655l;printf(%dn,sizeof(ut);printf(%x,%x,%xn,int(u.c),u.s,u.l);u.s=0x4433;printf(%x,%x,%xn,int(u.c),u.s,u.l); u.c=0x22;printf(%x,%x,%xn,int(u.c),u.s,u.l);,链表及操作,链表是一种重要的存储结构,在物理存储上各单元是不连续的,一个单元记住另一个单元的地址,如下图所示对链表的常见操作包括,遍历,插入元素,删除元素等链表还可以用两个地址单元,分别记住前一个单元的地址和后一个地址,这被成为双向链表让链表最后一个单元的指针保存首结点的地址,就可以构造循环链表,链表的建立,建造十个结点的链表,结点结构为struct student int id; student *next ;结点值为09,构造完后,遍历输出然后把建立和遍历功能分别移到createLink showLink函数中,/用函数建造链表#include struct student int id; student *next ;student * createLink() int i; student *h,*lp,*np; h=lp=new student; for(i=0;iid=i; np-next=NULL; lp-next=np; lp=lp-next; ; return h;void showLink(student *h) student *p; p=h-next; while(p!=NULL) printf(%d,p-id); p=p-next; printf(n);void main() student *h; h=createLink(); showLink(h);,结点插入函数,/在值为key结点后插入结点valueint insertAfter(student *h,int key,int value)student *p,*np;p=h-next ;while(p-id!=key ,删除结点,/删除指定值的结点int delNode(student *h,int key) student *p,*lp; p=h-next;while(p-id!=key,双向链表,struct student int id; student *next ; student *last; ;,玫举类型(选学),enum coinpenny,nickle,dime,quarter,half_dollar,dollarenum coinpenny,nickle=5,dime,quarter,half_dollar,dollarenum coinpenny=1,nickle=5,dime=10,quarter=25,half_dollar=50,dollar=100enum stateready,run,stop,枚举举例(选学),#include enum coinpenny,nickle,dime,quarter,half_dollar,dollar;/enum coinpenny,nickle=5,dime,quarter,half_dollar,dollar;/enum coinpenny=1,nick
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小小动物园教案
- 2026年金融科技行业发展现状与创新策略报告
- 初中七年级道德与法治《破冰与共建:认识新同学》教案
- 九年级英语上册 Unit 5 Art and Society 第六课时:从输入到输出-综合语言运用与创造性写作教学设计
- 大学本科数字媒体艺术专业二年级《数字版画创作:观念、技术与流程》教案
- 小学一年级数学下册《百数探秘:100以内数的多元数法》教学设计
- 小学六年级信息技术上册:初探数字化学习平台-项目导引式教案
- 2023年-2024年教师资格之中学教育知识与能力高分通关题型题库附解析答案
- 四年级美术《巧思妙贴》教学设计
- 人教版三年级上册长方形和正方形周长练习题
- 人教版七年级劳动教育上册全册教案
- 2025年湖南长沙市食品药品检验所招聘14人历年高频重点提升(共500题)附带答案详解
- 肩周炎的中医推拿治疗课件
- 《慢性阻塞性肺疾病急性加重(AECOPD)诊治中国专家共识(2023年修订版)》解读
- 家庭教育讲师班培训
- 重卡换电站可行性研究报告
- 犬猫产科疾病 子宫蓄脓(宠物疾病防治课件)
- 铁路电务段运用PDCA循环减少合福高铁CNTT道岔缺口视频监测误报警QC成果汇报书
- 超滤反渗透操作维护手册
- 技术标标书范本
- YS/T 830-2012正丁基锂
评论
0/150
提交评论