已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能安防设备软件测试规范
- 加工工艺优化与效率提升手册
- 客户投诉处理结果及跟进措施回复函(7篇)
- 小型企业项目管理与进度控制方案
- 物流行业物流管理师绩效评估表
- 汽车维修车间自动化工具使用指导手册
- 催办供应商违约赔偿执行函(6篇)
- 零售行业店长店铺销售额绩效分析表
- 回复申请员工年度休假函6篇范文
- 关于加强和推动生态景观规划工作的请示函7篇范文
- 粤政易使用规范制度
- 山东省德州市2025-2026学年高一上学期期中考试生物试卷(含答案)
- 电子鼻咽喉镜的临床应用
- T-CHSA 101-2025 儿童睡眠呼吸障碍口腔矫治专家共识
- 碳十醇酮团体标准
- DB52∕T 1816-2024 机械发泡温拌沥青混合料施工技术规范
- 钢梁步履式顶推技术规范
- 大数据与财务管理专业教学标准(高等职业教育专科)2025修订
- 机关后勤维修管理制度
- T/CACM 1056.51-2017中药材种子种苗百合种球
- 隧道工程工作总结
评论
0/150
提交评论