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

    构造数据类型.ppt

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

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

    构造数据类型.ppt

    已了解的数据类型:,整型,浮点型,字符型,数组,简单数据类型,用户定义的数据类型,特点:所有的元素都是同一种类型,存在的问题:难以处理较复杂的数据,如:建立一份学生档案,对每一个学生至少需要以下一些信息,学号(unsigned num)姓名(char name20)性别(char sex)年龄(int age)成绩(float score)地址(char addr30),9.1.1 结构体的类型定义,C程序可将上述数据的集合定义为一种结构体类型:,struct student unsigned num;char name20;char sex;int age;float score;char addr30;,上述定义中:struct 关键词(保留字),表示定义一种结构体类型。student 结构体名,相当于类型名(int,float等),其一般形式:struct 结构体名 成员表列;成员表列:类型标识符 成员名,以上仅说明了定义一种类型的方法,尚未定义变量。,9.1.2 结构体类型变量的定义,一、先定义结构体类型再定义结构体变量,三种方法:,则 x1,x2为student 型变量,x1,x2可存放student数据。,例:,二、在定义结构体类型的同时定义变量,例:struct student int num;char name20;char sex;int age;char addr30;x1,x2;,成员表列 变量名表列;,定义形式 struct 结构体名,三、直接定义结构类型变量,定义形式 struct 成员表列 变量名表列;不出现结构体类型名,如:struct int num;char name20;char sex;int age;char addr30;x1,x2;,1.类型名与变量名是不同的概念,3.每一个成员的作用如同该类型的变量,4.成员名与程序中的变量名可相同但意义不同,几点说明:,2.允许成员名为另一个已定义的结构型变量,struct date int month;int day;int year;,struct student int num;char name20;char sex;int age;struct date birthday;char addr30;x1,x2;,结构体的嵌套定义,9.1.3 结构体变量的初始化,struct student x1=8906,Li Ming,M,85.5;,一、先定义结构,在定义结构变量时对每个成员赋初值,如:struct student unsigned No;char name20;char sex;float score;;,若 x1 的起始地址为2000,则 x1 在内存中占有的存储单元为:,共用27个字节的连续单元,struct exp int a=1234;float b=56.7;char yn8=test;x;,三、结构定义与变量定义及初始化合二为一:,struct exp int a;float b;char yn8;x=1234,56.7,test;,但不能这样写:,9.1.4 结构体变量成员的引用,如:x1为struct student型变量,则 x1.num:表示x1的学号 x1.name:表示x1的名字,访问结构变量实质上是引用其成员,引用格式:结构变量名.成员名 圆点运算符称为成员运算符,它的运算级别是最高的。,有两种运算符可访问结构成员,一、引用结构体变量中成员,注意:,1.只能用变量的成员,不可用结构变量名直接运算。,2.每一个成员的作用与其同类型的简单变量的引用相同。,二、箭头运算符:,struct student char name 10;char sex;int age;float score;char addr20;x1;,struct student p;,例:,则p为结构指针变量,它可用来存放student型变量的地址,令 p=,则 p为x1的首地址.,访问结构成员:,pname 表示x1的姓名;,page 表示x1的年龄;,pname 等价于(*p).name,page 等价于(*p).age,(2)用指针变量(p).成员名(p).num,(3)用指向运算符成员名 p num,(1)结构体变量名.成员名 x1.num,注意:指针变量p必须是结构指针型,,且有p=,struct tempint a;char ch;x1,x2;,main()x1.a=10;x1.ch=a;x2=x1;printf(%d,%c,x2.a,x2.ch);,把结构变量x1的值赋给结构变量x2,如:,三、将结构体变量作为一个整体来使用,可以把一个结构变量赋给另一个同类型的结构变量。,四、关于结构变量的几点说明:,1.结构变量不是一个简单变量,它的值是由许多个基本数据组成。,2.可以把一个结构变量赋给另一个同类型的结构变量。,3.占有的存储单元大小取决于成员的数据类型,struct exp int a;float b;char yn8;,struct exp x=1234,56.7,text,结构变量占用的内存单元为14个字节。,如:,4.不可以将两个结构变量进行关系比较,struct temp int a;char ch;x1,x2;,main()x1.a=10;x2.ch=a;if(x1=x2),5.可通过sizeof()运算符获得结构变量占用的内存大小,struct exp int num;char ch;char name20;float sal;x1;,main()int size;size=sizeof(x1);printf(size=%dn,size);,如:,9.1.5 结构体变量的输入输出,若有 struct student h;,则:scanf(%s,printf(%s,h);,错误,原因:结构体变量中包含有多个不同类型的数据项。,正确方法:对结构体变量各成员的值进行输入/输出。,如:scanf(%d%s,printf(%d%s,h.num,h.name);,只能对结构变量的成员进行输入/输出,9.2 结构体数组,同数组定义类似: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,0,Zhang,0,Hang,0;,例:编写一个统计得票数的程序,假定有三个侯选人,每一侯选人的数据包括其姓名和得票数。,可定义结构类型person和结构数组leader,#include struct personchar name20;int count;leader3=li,0,zhang,0,hang,0;main()int i,j;char 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 Hang Zhang Zhang Hang Li Hang Zhang Li,输入:,运行情况如下,Li:4 Zhang:3 Hang:3,显示:,9.3 结构体变量与函数,把结构变量的数据传给函数的参数有三种方式:,传递单个成员的值;,传递整个结构;,传递指向结构的指针;,传值,传地址,例.把整个结构传递给参数,#include struct treeint x;char*s;t;void func(struct tree t)t.x=t.x+10;t.s=computer;,main()t.x=6;t.s=minicomputer;func(t);printf(%d,%sn,t.x,t.s);,程序运行结果:6,minicomputer,一种自定义的数据类型,一、共用体数据类型的特点,与结构体类似之处:由不同的数据项组成一个整体。,与结构体不同之处:占用的内存单元不同。,9.4 联合体数据类型,二、共用体类型定义,定义方式与结构体类型完全相同。,把结构体类型中的关键字struct换成union即可。,struct memb float v;int n;char c;stag;,stag占内存7个字节的空间,union memb float v;int n;char c;ustag;,ustag占的内存空间为4个字节,共用体类型变量每次只能存放一个成员的值,例:,三、共用体类型变量的引用,引用方法同结构体变量:,(共用体类型变量名).,共用体类型变量的输入输出同结构体类型变量相同。,#includeunion memb float v;int n;char c;main()union memb utag;utag.c=T;utag.n=18;utag.v=36.7;printf(%5.1fn%dn%cn,utag.v,utag.n,utag.c);,运行结果:36.7 13107=,例:,?,想一想:,若改变成员的赋值顺序:,utag.v=36.7utag.n=18utag.c=T,则运行结果为:36.5 84 T,构造类型(数组,结构体,共用体)的定义可以嵌套。,struct privint n;float f;char c;,union publ int ns;float fs;struct priv mud;spe5;,spe为共用体类型数组,每个数组元素所占用的内存单元为:,注意:,四、可对联合体变量进行的操作,(1)同类型联合体变量之间的赋值运算,(2)取某成员的地址,(3)用指向联合体的指针运算符访问联 合体成员,联合体变量中起作用的成员是最后一次存放的成员。,9.5 枚举数据类型,枚举是用标识符表示的整数常量的集合。,枚举类型定义形式:Enum 标识符1,标识符2,标识符n;,枚举型常量的起始值为0。例:enum seasons SPRING,SUMMER,AUTUMN,WINTER;enum seasons SPRING=1,SUMMER,AUTUMN,WINTER;,枚举变量定义的一般形式如下:enum变量名1,变量名2,,变量名n;,/*exam9_6.c 枚举类型的用法*/#include enum monthsJAN=1,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC;main()enum months month;char*monthName=,January,February,March,April,May,June,July,Auguest,September,October,November,Dcember;for(month=JAN;month=DEC;month+)printf(%2d-%-10sn,month,monthNamemonth);,9.6 类型定义,类型定义:在C语言中允许给已有的数据类型定义一个新的名字。定义形式:typedef数据类型新类型名;,例:typedef int INTEGER;typedef float REAL;INTEGER a,b;等价于int a,b;REAL x;float x;,

    注意事项

    本文(构造数据类型.ppt)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开