(中职)第6章 构造数据类型okppt课件.ppt

上传人:春哥&#****71; 文档编号:15609036 上传时间:2022-05-13 格式:PPT 页数:33 大小:1.73MB
返回 下载 相关 举报
(中职)第6章 构造数据类型okppt课件.ppt_第1页
第1页 / 共33页
(中职)第6章 构造数据类型okppt课件.ppt_第2页
第2页 / 共33页
点击查看更多>>
资源描述

《(中职)第6章 构造数据类型okppt课件.ppt》由会员分享,可在线阅读,更多相关《(中职)第6章 构造数据类型okppt课件.ppt(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、在此输入您的封面副标题(中职)第6章 构造数据类型ok 6.1 结构体类型 6.2 联合体 6.3 枚举类型 6.4 用typedef定义类型6.1.1 结构体类型的定义结构体类型的定义10010LiFunM1887.5Beijingnumnamesexagescoreadd 结构体是由一系列具有相同类型或不同类型的数据构成结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。在一个结构中,这些数据应是在逻辑上相互关的数据集合。在一个结构中,这些数据应是在逻辑上相互关联的。结构中的每个数据称为结构的成员。联的。结构中的每个数据称为结构的成员。 结构体提供了一种将相关的数据汇集在一起的方法

2、,它结构体提供了一种将相关的数据汇集在一起的方法,它使程序可以方便地处理象职工记录这样复杂的数据。使程序可以方便地处理象职工记录这样复杂的数据。 6.1 结构体类型结构体类型 在程序设计过程中,使用结构体之前,必须先对结构体的在程序设计过程中,使用结构体之前,必须先对结构体的组成进行描述,这就是结构体类型的定义。结构体类型的定义组成进行描述,这就是结构体类型的定义。结构体类型的定义描述了组成结构体的成员以及每个成员的数据类型。在定义了描述了组成结构体的成员以及每个成员的数据类型。在定义了结构体类型以后才能定义结构体变量。结构体类型以后才能定义结构体变量。struct studentint nu

3、m;char name20;char sex;int age;double score;char addr30;定义结构体类型的一般形式为:定义结构体类型的一般形式为:struct 结构类型名结构类型名 数据类型数据类型 成员名成员名1; 数据类型数据类型 成员名成员名2 . 数据类型数据类型 成员名成员名n; struct是定义结构体类型的关键字;“结构体类型名”是一个标识符,它和struct一起形成特定的结构体类型。然后就可以象基本类型(int型、double型)一样,定义自己的变量。 花括号 内是组成该结构体的各个数据,称为结构体的成员。在结构体类型的定义中,对每个成员的成员名和数据类型

4、进行说明。每个成员的数据类型既可以是基本的数据类型,也可以是已经定义过的结构体类型。 上面student结构类型一经定义后便成为一种新的数据类型,它和基本数据类型的地位是等同的;然而,它又是一种特殊的数据类型,它是根据设计需要,由用户将一组不同类型而又逻辑相关的数据组合而成的一种新类型。 6.1.2 结构体类型变量的定义结构体类型变量的定义 结构体类型的定义说明了该结构体类型的组成。结构体类结构体类型的定义说明了该结构体类型的组成。结构体类型本身并不占用存储空间,只有当用该类型定义变量时才需要型本身并不占用存储空间,只有当用该类型定义变量时才需要分配存储空间。结构体类型定义后,即可定义属于该类

5、型的变分配存储空间。结构体类型定义后,即可定义属于该类型的变量,即结构体类型的变量,简称为结构体变量。量,即结构体类型的变量,简称为结构体变量。1直接定义直接定义 在声明结构体类型的同时定义结构体变量。 间接定义间接定义先定义结构体类型,再定义结构体变量。 无名定义无名定义当结构体类型和结构变量同时定义时,可省略结构体类型名。但是,由于省略了结构体类型名,因而以后不能再用这种结构体类型定义其它变量。 struct student int num; char name20; char sex; int age; double score; char addr30; student1,studen

6、t2;struct int num; char name20; char sex; int age; double score; char addr30; student1,student2;直接定义直接定义无名定义无名定义struct studentint num;char name20;char sex;int age;double score;char addr30;struct student student1,student2;间接定义间接定义6.1.2 结构体类型变量的定义结构体类型变量的定义使用结构体变量时,应注意几点:使用结构体变量时,应注意几点: 结构体类型与结构体变量是两个

7、不同的概念,不要混同。 C+允许在一个结构中嵌套另一个结构。即结构体类型中的成员可以是另外一个已定义的结构体类型。 成员名与程序中的变量可以相同,但不能与结构体类型名相同。结构体变量名可以和结构体类型名相同。 结构体变量的初始化是指在定义结构体变量的结构体变量的初始化是指在定义结构体变量的同时给每个成员赋初值。同时给每个成员赋初值。结构体变量初始化的一般语法形式为:结构体变量初始化的一般语法形式为: struct 结构体类型名结构体类型名 结构体变量名结构体变量名=初始数据初始数据; 其中:初始数据的个数、顺序、类型均应与定其中:初始数据的个数、顺序、类型均应与定义结构时成员的个数、顺序、类型

8、保持一致,中间义结构时成员的个数、顺序、类型保持一致,中间用逗号隔开。用逗号隔开。6.1.3 结构体变量的初始化结构体变量的初始化struct student int num; char name20; char sex;stu=10001, “WangPing”,F;#includevoid main() coutstu.numstu.namestu.sex;初始数据个数、顺序和类型应与结构成员一一对应初始数据个数、顺序和类型应与结构成员一一对应struct student int num=10001; char name20=“WangPing”; char sex=F;stu; 6.1.

9、3 结构体变量的初始化结构体变量的初始化 在定义了结构体变量以后,就可以访问这个变量,通常我们是在定义了结构体变量以后,就可以访问这个变量,通常我们是访问结构体变量的成员。访问结构体变量的成员。 访问成员的一般语法形式为:访问成员的一般语法形式为: 结构体变量名结构体变量名.成员名成员名 其中,符号其中,符号“.”是成员运算符,用于访问一个结构体变量中的是成员运算符,用于访问一个结构体变量中的某个成员,某个成员, 6.1.4 结构体变量的成员的访问结构体变量的成员的访问说明:说明: 可以对结构体变量中的成员赋值。 成员的类型是在定义结构体时规定的,在程序中访问成员时必须与定义时的类型保持一致。

10、结构体变量的成员可以象普通变量一样进行各种运算。 如果成员本身是结构体类型,则要使用若干个成员运算符,一级一级地找到最低的一级的成员,只能对最低级的成员进行运算. 在某些情况下允许对结构体变量进行整体操作,如把一个结构体变量中每个成员的值赋给同类型的另一个结构体变量中的对应成员。但是在对结构体变量进行输入和输出时,只能是针对每一个成员来进行。 访问结构体变量的成员访问结构体变量的成员v 结构体变量名结构体变量名 . 成员名成员名“.”是成员运算符,优先级最高,左结合性是成员运算符,优先级最高,左结合性 例如例如:student1.num=10010;student1.age+;coutstud

11、ent1.num;sum=student1.num+student1.age;v 结构体变量可以整体赋值结构体变量可以整体赋值student1=student26.1.4 结构体变量的成员的访问结构体变量的成员的访问_结构体可以嵌套结构体可以嵌套struct date int month; int day; int year;struct student int num; char name20; char sex; int age; struct date birthday; char addr30; student1,student2;num name sexagebirthdayaddr

12、month dayyear=11;cout;v初始化初始化:student stu=10001,“WangPing”,F,5,24,1976,24;v使用使用:v定义定义:_ 定义定义: 结构体数组即数据类型为结构体类型的数组,它与以前介结构体数组即数据类型为结构体类型的数组,它与以前介绍过的数值型数组的不同之处在于结构体数组的每个数组元素绍过的数值型数组的不同之处在于结构体数组的每个数组元素是一个结构体类型的变量。是一个结构体类型的变量。struct student int num; char name20; char sex; stu16;student stu210;6.1.5 结构体数

13、组结构体数组1. 结构体数组的定义结构体数组的定义 结构体数组的定义与结构体变量相同 定义了两个student类型的结构体数组。其中,结构体数组stu1采用直接定义方式,结构体数组stu2采用间接定义方式。 结构体数组stu1和stu2各包含了6个和10个数组元素,每个元素都是student类型,都包含了num、name、sex三个成员。 _全部初始化时长度可省略全部初始化时长度可省略student stu=1001, “LiuLi”, F,1101, “HeFei”, M;l可访问结构体数组元素的成员:可访问结构体数组元素的成员: stu1.sex stu0.numl可进行同一个结构体类型变

14、量可进行同一个结构体类型变量(数组元素数组元素)的整体赋值的整体赋值 stu0=stu1;l 要对结构体数组元素的单个成员进行输入输出要对结构体数组元素的单个成员进行输入输出 for(i=0;istui.numstui.namestui.sex;2. 访问结构体数组元素的成员访问结构体数组元素的成员 在结构体数组中,当需要访问结构体数组元素中的某一成员时,可采用与结构体变量中访问成员相同的方法,利用“.”成员运算符来操作。 3. 结构体数组的初始化结构体数组的初始化 结构体数组在定义时也可以进行初始化。其初始化方法与一般数组的初始化方法基本相同,只是必须为每个元素提供各成员的值, #inclu

15、destruct student int num; char name12; double score;void main()student st20;int i,n;coutn;coutinput num name score n;for(i=0;isti.numsti.namesti.score;for(i=0;in;i+) coutsti.numtsti.nametsti.scoresexv (*p).num,(*p).name, (*p).sexv 指针变量名指针变量名-成员名成员名“- ”是指向运算符,左结合性是指向运算符,左结合性(*p).sex 结构体指针变量的定义及初始化 结构

16、体指针变量在使用前应先进行定义说明。结构体指针定义的一般形式为: struct 结构体类型名结构体类型名 *指针变量名指针变量名; 用结构体指针变量访问结构体的成员2. 指向结构体数组的指针变量指向结构体数组的指针变量 指向结构体数组的指针变量的定义和使用方法与指向普通指向结构体数组的指针变量的定义和使用方法与指向普通数组的指针变量的定义和使用方法完全一样,只不过结构体数数组的指针变量的定义和使用方法完全一样,只不过结构体数组的数据类型是结构体类型而已。组的数据类型是结构体类型而已。struct studentint num;char name20;char sex;stu20,*p;p=st

17、u;即将该数组的首地址赋值给该指针变量即将该数组的首地址赋值给该指针变量注意:注意:(+p)-num(p+)-num的结果分别为何?的结果分别为何?1001“LiuLi”F1101“HeFei”M1201“WanLi”Fstu0stu1stu2p11011001#include struct dateint year,month,day;void func(struct date p)p.year=2000;p.month=5;p.day=22;void main()struct date d;d.year=1999;d.month=4;d.day=23;coutd.yeard.monthd.

18、day;func(d); coutd.yeard.monthyear=2000; p-month=5; p-day=22;main() struct date d; d.year=1999; d.month=4; d.day=23; coutd.yeard.monthd.day; func(&d); coutd.yeard.monthyear=2000; p-month=5; p-day=22;main() struct date d; d.year=1999; d.month=4; d.day=23; coutd.yeard.monthd.day; func(d); coutd.yeard.

19、monthd.day;19994232000522#includestruct studentint num;char name20;double score;void main() struct student stu4,*p,*q; int i; for (i=0;istui.numstui.namestui.score; for (p=q=stu;pscoreq-score) q=p; coutnumtnametscoreendl;4个学生,每个学生包括学个学生,每个学生包括学号、姓名、成绩。要求找出号、姓名、成绩。要求找出成绩最高者的姓名和成绩成绩最高者的姓名和成绩#include #

20、define N 30typedef struct student STUD;struct student int num; char name12; int score;void input(STUD stu,int n);void sort(STUD stu,int n);void swap(STUD &p,STUD &q);void output (STUD stu,int n);void main() STUD stuN; int n; cinn; input(stu,n); sort(stu,n); output(stu,n);对对n个同学的姓名,学号,成绩,按成绩排序后输出个同学的

21、姓名,学号,成绩,按成绩排序后输出void input (STUD stu,int n) int i; for (i=0;istui.numstui.namestui.score;void sort(STUD stu,int n) for (int i=0;in-1;i+) for (int j=0;jstuj+1.score) swap(stuj,stuj+1);void swap(STUD &p,STUD &q) STUD t; t=p;p=q;q=t;void output (STUD stu,int n) int i; for (i=0;in;i+) coutstui.numstui.

22、name ”来对联合体变量的成员进行操作。若使用联合体变量访问成员,用“.”运算符;若使用指向联合体类型的指针变量,用“-”运算符。其基本格式为: 联合体变量联合体变量.成员名成员名 或或 (*联合体指针变量名联合体指针变量名) .成员名成员名 联合体指针变量名联合体指针变量名-成员名成员名 联合体变量的不同成员,占用同一个存储区域。各成员在内存中占用同一个起始地址,这就是联合体变量的地址。但在某一瞬间,只能存放一个成员的数据,即只有一个成员有效,其它成员无效。 在联合体变量中,一个新成员被赋值后,原有成员的数据被覆盖。若连续为各成员赋值,只有最后一个被赋值的成员有效。 联合体类型和结构体类型

23、可以嵌套定义。结构体变量和结构体数组可以作联合体的成员,反之,联合体变量和联合体数组也可作成员。 6.2.3 联合体类型的特点联合体类型的特点 共用体类型数据的特点共用体类型数据的特点_同一个内存段在每一瞬时只能存放其中一种类同一个内存段在每一瞬时只能存放其中一种类型的成员;并非同时都存在和起作用型的成员;并非同时都存在和起作用_共用体变量的地址和它的各成员的地址都是同共用体变量的地址和它的各成员的地址都是同一地址。一地址。&a、&a.i、 &a.f、 &a.ch_起作用的成员是最后一次存放的成员;起作用的成员是最后一次存放的成员;a.i=1;a.ch=a;a.f=1.5;couta.f;_共

24、用体变量不能作为函数参数,但可使用指共用体变量不能作为函数参数,但可使用指向共用体变量的指针。向共用体变量的指针。_不能对共用体变量名赋值,不能在定义共用不能对共用体变量名赋值,不能在定义共用体变量时对它初始化体变量时对它初始化union dataint i;char ch;float f;a=1 ,a,1.5;a=1;m=a;不能初始化不能初始化不能对共用体变量赋值不能对共用体变量赋值不能引用共用体变量名以得到值不能引用共用体变量名以得到值_共用体类型可出现在结构体定义中,结共用体类型可出现在结构体定义中,结构体也可出现在共用体定义中。构体也可出现在共用体定义中。#includevoid m

25、ain()union example struct int x,y; in; int a,b; e;e.a=1;e.b=2;e.in.x=e.a*e.b;e.in.y=e.a+e.b;coute.in.x”运算符,而是在枚举类型定义之外,直接就可以访问。 枚举元素作为整型常量,可以直接赋给枚举变量、直接访问。 除枚举常量外,其它整型常量不能直接赋给枚举变量。 同类型的枚举变量间、枚举元素间、枚举变量与枚举元素间可以进行算术运算、关系运算。 枚举元素和枚举变量也有作用域范围,其含义与一般变量相同。 枚举元素和枚举变量可以作函数的参数,函数的返回值也可以是枚举类型。6.3.2 枚举元素的访问枚举元

26、素的访问 例:枚举变量使用例例:枚举变量使用例#include enum colorred,yellow,green,blue,white,black;enum color c1;void main ()c1=blue;coutred=”red” yellow=”yellow” green=”green“ blue=”blue“ white=”white” c1=c1endl;运行结果:运行结果:red=0 yellow=1 green=2 blue=3 white=4 c1=3typedef struct student STUD; 6.4 用用typedef定义类型定义类型struct s

27、tudent int num; char name20; char sex; int age; double score; char addr30; ;STUD student1,student2;用用STUD代替代替 struct student类型;类型;可以用typedef定义新的数据类型名。其一般形式为: typedef 原有数据类型原有数据类型 新的数据类型名新的数据类型名;其作用是用typedef定义的新数据类型名来代替已有类型名。 该定义指定用integer代表int类型,即为数据类型int建立了一个新名integer。typedef int integer;下面两条语句是等价的:int m,n;integer m,n;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁