欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《结构与联合》PPT课件.ppt

    • 资源ID:5568141       资源大小:227.50KB        全文页数:26页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《结构与联合》PPT课件.ppt

    第七章 结构与联合,构造类型二,结构和联合的概念,在数据中,经常有一些既有联系,类型又不同的数据,它们又需要一起处理。,如:学生基本档案的数据,字段:学号 姓名 性别 地址 分数类型:long char char char float,C语言允许用户按自己的需要将不同的基本类型构造成一种特殊类型,即结构和联合。,结构和联合的操作分为三个步骤:,根据需要定义结构或联合类型;通过定义的类型说明变量、数组、指针;引用变量、数组元素和指针指向的对象。,7.1 结 构,结构类型的定义,格式:,struct 结构名 type 成员1;type 成员2;type 成员n;;,结构标志。,用标识符命名的结构类型名。,结构类型中所含的成员项及其类型。,struct student long num;char name20;int age;char add30;float score;,结构的定义确定了如下两点:,定义结构类型,确定结构中的成员项的名称及类型。,指明该结构类型的变量在内存中的组织形式。,结构变量的说明,定义结构只是确定该结构类型的名称及其成员项的组成及成员项的类型。必须由定义的结构类型说明结构变量,才开辟相应的内存空间以供使用。,结构变量的说明方式:,定义后说明,struct student long num;char name20;int age;char add30;float score;,struct student wang,zhang,liu;,用struct student 类型说明三个变量。,定义结构类型时说明变量,wang,zhang,liu;,无名结构方式说明变量,struct long num;char name20;int age;char add30;float score;wang,zhang,liu;,说明:,注意类型和变量的区别。成员项可单独使用。wang.age=20结构的成员项也可以是结构变量。,struct doc char name20;struct birth age;float sal;struct birth int year;int mon;int day;,结构doc中的成员项是一个birth的结构变量!,结构变量的引用,结构变量都是以成员项作为引用单位,引用方式:,结构变量名.成员项名,wang.score=100;,说明:,结构变量的成员项与普通变量有相同的性质。,结构体变量的初始化,结构变量可以在说明时赋初值,称为初始化。,static struct student long num;char*name;char sex3;int age;float score;char addr 30;wang=99010101,“王五”,“男”,20,90.5,“上海”;,结构数组,结构变量也可以构造成数组,称为结构数组。每个数组元素都是一个结构变量,都含有结构成员项。它们在内存中的地址是连续的。,数组的说明:,struct 结构名 结构数组名 常量表达式;,struct student long num;char name20;float score;stud3;,说明:,三个结构数组元素都含有student 的成员项。结构数组名stud,代表结构数组的首地址。外部和静态结构数组在说明时可以初始化。,=99010101,“wang”,67.5,99010102,“zhao”,78.5,99010103,“fun”,98.5;,举例:统计三个候选人的票数。,#include#define NUMBER 10struct student int num;char name20;int count;lead3=1,“fun”,0,2,“tan”,0,3,“wang”,0;void main(void)int i,j,numb;for(i=0;i0)leadnumb-1.count+;else printf(“Selection errorn”);printf(“n”);for(i=0;i3;i+)printf(“%5s:%dn”,leadi.name,leadi.count);,定义结构说明数组并初始化。,循环输入统计票数,输出结果。,chp7ex1,结构指针,概念:指向结构变量首地址的指针称为结构指针。结构指针加一,地址加一个结构变量所占的字节。,结构指针的应用:,先说明结构指针 struct student*p,stu1;,指向结构的指针。,指针指向同类型的结构变量或数组。p=,通过指针引用指针指向变量的成员项,引用方式为:,方式一:(*p).成员项名方式二:p-成员项名,结构指针主要用于对结构数组操作。,struct studoc int iNum;char*name;*p,wang=2001,”wang li”;p=,举例:,#include struct sam int num;char name20;char*addr;ws=101,“fun”,“Shanghai”,102,“tan”,“Bejing”,103,“wang”,“Hefei”;void main(void)int i;struct sam*pws;pws=ws;for(i=0;inum,pws-name,pws-addr);,定义结构,说明数组并初始化。,说明结构指针。,指针指向结构数组。,通过指针引用成员项。,chp7ex2,结构与函数参数,当函数需要通过形参传递一个结构时,一般有两种处理办法:,传递一个结构指针(效率高)。,#includevoid mprintp(struct student*);struct student long num;char*name;float score;void main()struct student s1;s1.num=99010101;s1.name=“wang hai”;s1.score=99;mprintp(,指向结构的指针。,传递一个结构变量(效率低)。,void mprintp(struct student);,s1,struct student sv,sv.num,sv.name,sv.score,结构变量。,返回结构变量的函数,当函数的返回值为一个结构变量时,称该函数为一个结构型函数。,#includestruct stu long num;char name10;float score;struct stu sv(void);void main(void)struct stu ws;ws=sv();printf(“%ldn%sn:%fn”,ws.num,ws.name,ws.score);struct stu sv(void)struct stu stemp;gets(stemp.name)scanf(“%ld,%f”,chp7ex3,返回结构指针的函数,当函数的返回值为一个结构指针时,称该函数为一个结构指针型函数。,#includestruct stu long num;char*name;float score;sa=99010101,“fun”,89,99010102,“zhang”,99,99010103,“wang”,78,0,0,0struct stu*findp(long);void main()long lsanum;int i;struct stu*sap;printf(“Enter the number:”);scanf(“%ld”,struct stu*findp(long number)int i;for(i=0;sa i.num!=0;i+)if(sa i.num=number)break;return(,思考题,已知某班有6个人参加数学和物理竞赛的集训和课程考试,求:两门课程中的最高成绩,及对应的姓名、学号和课程编号。课程1,2的平均成绩,并求出两门课程都低于平均成绩的学生姓名和学号。对编号1的课程从高到低排序。(注意,其他成员项应保持对应关系)。说明:要求定义结构,第一成员项为学生姓名,第二成员项为学号,另外两个成员项为两门课成绩。、要求分别用函数完成。检查某位同学两门课程成绩分别排第几名。,7.2 链 表,引用自身的结构和链表的概念,结构中的某个成员项,为指向该结构类型自身的指针,则称为引用自身的结构。,struct student int num;float score;char*name;struct student*next;,指向自身的结构。,相同类型的结构指针。,链表是一种动态存储分配结构,通过指针相连,数据可以不连续存放。,head,结构变量,NULL,链表,head,2000H,2000H,2400H,2400H,NULL,tail,内存分配函数,链表的操作需要开辟内存单元以便插入或追加节点,删除节点后需要释放节点占用的内存单元。C 语言提供了相应的函数。,malloc函数,使用方法:ptr=malloc(size);,分配内存的字节数。,返回空类型的指针。成功:返回内存的地址。失败:返回NULL。,void*ptr;ptr=mallc(sizeof(int),ptr,void free(ptr),作用:释放ptr指向的由malloc分配的内存空间。,链表的操作,建立链表,步骤:定义引用自身的结构。说明指向结构的指针,head(头指针),tail(尾指针)。,#iinclude#include struct slist char info;struct slist*nextp;void main(void)struct slist*head,*tail,*find;char c,d;head=tail=(struct slist*)malloc(sizeof(struct slist);head-nextp=NULL;,headtail,NULL,while(c=getchar()!=n)tail=append(tail,c);,在尾部追加节点,步骤:为新节点分配内存。建立新节点的成员项。建立链接关系。,struct slist*append(struct slist*ptr,char c)struct slist*p;p=(struct slist*)malloc(sizeof(struct slist);p-info=c;p-nextp=NULL;ptr-nextp=p;return(p);,headtail,NULL,p,NULL,tail,tail,删除节点函数,void cdelete(struct slist*pcdel)struct slist*p;p=pcdel-nextp;pcdel-nextp=pcdel-nextp-nextp;free(p);,p,思考题:编写一个函数,在当前指针位置插入节点。,7.3 联 合(union),概念:不同数据类型的集合;每个成员项共用一段内存空间;某一时刻只能对一个“活的active”成员项操作;,联合类型的定义,格式:,union 联合名 type 成员项 1;type 成员项 2;type 成员项 n;,union exam int a;float b;char c;,联合变量的说明和引用,可以用联合类型说明:联合变量、联合数组、指向联合指针。,union exam x,*px,y10;,引用:引用变量的成员项。,通过变量引用:变量名.成员项名通过指针引用:指针-成员项名,联合与结构的区别,struct exam int a;float b;char c;x;,x,a,b,c,union exam int a;float b;char c;x;,x,b,a,c,结构变量的每个成员项有独立的内存单元,而联合变量的成员项以最大的成员项开辟单元后,所有成员项共用单元。,sizeof(struct exam),举例:,#include void main(void)union exam int i;char ch2;x;x.i=24897;printf(“i=%xHn”,x.i);printf(“ch0=%xH,ch1=%xHn”,x.ch0,x.ch1);printf(“ch0=%c,ch1=%cn”,x.ch0,x.ch1);,chp7ex4,7.4 枚 举,概念:有限状态的集合,以整型值代表。如:月份,星期。,枚举类型的定义,enum 枚举类型名 枚举元素表;,enum daysun,mon,tue,wed,thv,fri,sat;,说明:,枚举元素如果不赋值,自动取0n-1整数值;,在定义时,可以对某个枚举元素赋值,其后的元素按此值,自动加一递增。,枚举变量的说明和引用,enum day day1,day2;,枚举变量只能取该类型中的一个元素。,day1=sat;,day2=(enum day)2;,7.5 用户定义类型,C 语言可以通过 typedef 语句,定义自己命名的数据类型。实际上是给 C 类型重新起个名字。,typedef语句的格式:,typedef type 标识符;,C语言的类型名。,用户定义类型名。,引用方式:,基本类型,typedef int INTEGER;INTEGER a,b;,数组,typedef char STRING41;STRING a,b;char a41,b41;,结构或联合,typedef struct char name30;long num;float csore;PERSONDOC;PERSONDOC a,b,*p;,

    注意事项

    本文(《结构与联合》PPT课件.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开