第14章结构体共用体和用户自定义类型ppt课件

上传人:汽*** 文档编号:590594842 上传时间:2024-09-14 格式:PPT 页数:39 大小:313KB
返回 下载 相关 举报
第14章结构体共用体和用户自定义类型ppt课件_第1页
第1页 / 共39页
第14章结构体共用体和用户自定义类型ppt课件_第2页
第2页 / 共39页
第14章结构体共用体和用户自定义类型ppt课件_第3页
第3页 / 共39页
第14章结构体共用体和用户自定义类型ppt课件_第4页
第4页 / 共39页
第14章结构体共用体和用户自定义类型ppt课件_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《第14章结构体共用体和用户自定义类型ppt课件》由会员分享,可在线阅读,更多相关《第14章结构体共用体和用户自定义类型ppt课件(39页珍藏版)》请在金锄头文库上搜索。

1、本章重点14.1 用typedef阐明一种新类型名 14.2 构造体类型14.3 共用体第第14章章 构造体、共用体和用户自定义类型构造体、共用体和用户自定义类型14.1 用typedef阐明一种新类型名言语允许用户本人定义类型阐明符,也就是说允许由用户为数据类型取“别名。类型定义符typedef即可用来完成此功能,它可以言语的根本数据类型取“别名,也可以为用户自定义的构造类型取“别名。例如, typedef int INTEGER这以后就可用INTEGER来替代int作整型变量的类型阐明了。例如:INTEGER a,b;它等效于:int a,b;用typedef定义数组类型、指针类型、构造类

2、型将带来很大的方便,不仅使程序书写简约,而且加强了可读性。例如:typedef char NAME20; 表示NAME是字符数组类型,数组长度为20。然后可用NAME 阐明变量,如:NAME a1,a2,s1,s2;完全等效于:char a120,a220,s120,s220typedef struct stu char name20;int age; char sex; Student;定义Student表示struct stu的构造类型,然后可用Student来阐明构造变量:Student body1,body2;typedef定义的普通方式为:typedef 原类型名 新类型名 有时也可

3、用宏定义#define来替代typedef的功能,但是宏定义是由预处置完成的,而typedef那么是在编译时完成的,它并不只是作简单的字符交换。14.2 构造体类型C言语的根本数据类型有整型,实型,字符型等,在实践问题中,把一个对象笼统成数据来表示时,往往需求一组不同根本数据类型的组合。 14.2.1 构造体类型的阐明构造体类型阐明的普通方式是:struct 构造体标识名 类型名1 构呵斥员名表1; 类型名2 构呵斥员名表2; 类型名n 构呵斥员名表n; ;其中struct是关键字,是构造体类型的标志。“构造体标识名和“构呵斥员名都是用户定义的标识符。其中“构造体标识名是可选项,在阐明中可以不

4、出现。成员表列由假设干个成员组成,由一对大括号括起来,每个成员都是该构造的一个组成部分。对每个成员也必需作类型声明,其方式如下: 类型阐明符 成员名;构造体成员名表中可以含有多个同类型的成员名,它们之间用逗号分隔。例如:struct student int math score, ;english score, sum;构造体中的成员名可以和程序中的其它变量同名;不同构造体中的成员也可以同名。 在成员列表中,类型名1类型名n不仅可以是简单数据类型,也可以是构造类型,所以也可以是某种构造体类型。这时称为构造体的嵌套。嵌套时允许内嵌构造体成员名与外层成员的名字一样。例如:struct studen

5、t char name10; char sex; struct date birthday; float score5; ;以上阐明中,birthday成员的类型struct date是一个曾经阐明过的构造体类型。假设事先没有阐明这一类型,那么以上构造体类型阐明可改写成如下:struct student char name10; char sex; struct int year;int month;int day; birthday; float score5; ;14.2.2 构造体类型的变量的定义定义构造类型变量由以下四种方法:1先定义构造,再阐明构造变量。例如:struct stude

6、nt int number; char name31; short age; char sex; char grade; char address101;struct student boy1, boy2;2在定义构造类型的同时阐明构造变量。这种方式阐明的普通方式为:struct 构造名成员表列 变量名表列;例如:struct student int number; char name31; short age; char sex; char grade; char address101; boy1, boy2;3直接阐明构造变量。即在构造变量定义中省去了构造类型名,而直接给出构造变量。普通方

7、式为:struct成员表列 变量名表列;例如以上构造中把student省略,struct student boy1, boy2;4运用typedef阐明一个构造体类型名,再用新类型名来定义变量。例如:typedef struct char ame2; char sex; struct date birthday; float sc4; STREC;STREC boy1, boy2;此处STREC是一个详细的构造体类型名,它可以独一的标识这种构造体类型。因此,可用它来定义变量,不可再写关键字struct。14.2.3 构造体类型的变量的援用表示构造变量成员的普通方式是:构造变量名.成员名例如:

8、boy1. number 即boy1的学号boy2. name 即boy2的名字构造变量的成员,与一样类型的普通变量并无区别,可以像普通变量一样参与各种运算,这根据其类型决议。例如:boy1.number = boy2.name;一样类型的构造体变量之间还可以进展整体援用赋值,例如:struct char name10; int num; per1, per2=“WUTING, 23;执行赋值语句:per1=per2;后,per2中每个成员变量的值都赋给了per1中对应的同名成员。这种赋值方式很简约,但必需保证赋值号两边的构造体变量类型一样。14.2.4 构造体类型变量的赋值和初始化构造变量的

9、赋值就是给各构呵斥员赋值。可用输入语句或赋值语句来完成。例如:#include stdio.hint main(void)struct Studentint number; char name31; short age; char sex; char grade; boy1, boy2; boy1.number = 1461; printf(input name:); scanf(%s, boy1.name); printf(input age:); scanf(%d, &boy1.age); boy1.sex=m; boy1.grade=5; boy2=boy1; return 0;程序运转

10、时输入:input name:zhanginput age:12 和其他类型变量一样,对构造变量可以在定义时进展初始化赋值。#include stdio.hint main(void) struct Student int number; char name31; short age; char sex; char grade; boy2, boy1 = 1461, zhang, 12, m, 5; boy2=boy1; return 0;14.2.5 构造体类型数组 定义构造体数组的方法和构造变量类似,只需阐明它为数组类型即可。例如:struct student int number; ch

11、ar name31; short age; char sex; char grade; student50;在定义构造体数组时,对其作初始化赋值,可不指定数组的长度,此时数组长度等于赋值项数。由于数组中的每个元素都是一个构造体,所以通常将其成员的值依次放在一对大括号中,以便区分各个元素。例如:struct bookcard char num5; float money; bk3= “NO.1, 32.5, “NO.2, 40.0, “NO.3, 65.5 ; 给二维数组的赋值规那么同上 14.2.6 构造体指针变量1构造变量的指针一个指针变量当用来指向一个构造变量时,称之为构造指针变量。构造指

12、针变量中的值是所指向的构造变量的首地址。有了构造指针,就可经过构造指针来访问构造变量或构造变量成员,这与经过数组指针来访问数组或数组元素是一样的。构造指针变量阐明的普通方式为:struct 构造名 *构造指针变量名构造指针变量也必需求先赋值后才干运用。赋值是把构造变量的首地址赋予该指针变量,不能把构造名赋予该指针变量。 有了构造指针变量,就能更方便地访问构造变量的各个成员。其访问的普通方式为: (*构造指针变量).成员名 或 构造指针变量-成员名例如:(*ps).number 或 ps-number一个构造指针变量虽然可以用来访问构造变量,但是,不能使它指向一个成员。也就是说不允许取一个成员的

13、地址来赋予它。2构造数组的指针设pt指向的构造变量pt-number pt指向的构造变量的成员的number的值pt-number+ pt指向的构造变量的成员的number的值,运用后加1+pt-number pt指向的构造变量的成员的number先加1,再运用设pt指向的构造数组(pt+)-number 先使pt指向下一数组元素,得到其number的值pt+-number 等同于(pt+)-number(+pt)-number 得到pt当前指向数组元素的number值,后使pt指向下一元素 3构造指针变量作为函数参数把一个构造变量的值传送到另一个函数,有3种方式:1传送构呵斥员。 2传送构造

14、变量。 3传送构造指针。 14.2.7 链表 运用数组存放数据,必需事先定义好数组的长度。但数组元素的插入和删除会引起大量数据的挪动,从而使简单的数据处置变得非常低效。为了能有效地处理这些问题,一种称为链表的构造类型得到了广泛的运用。 链表是一种动态数据构造,它的特点是用一组恣意的存储单元(可以是延续的,也可以是不延续的)存放数据元素。链表中每一个元素称为结点,每一个结点都是由数据域和指针域组成的。每个结点中的指针域,包含一个指针,指向下一个结点;也可以多个指针指如双向链表。 链表有一个头结点,表示链表中的第一个元素,它的指针指向第二个结点。第二个结点的指针指向第三个结点,如此往复,直到最后一

15、个元素,这就是链表的尾结点,它的指针存放的是空值NULL指针。1静态链表静态链表的节点是在程序中事先定义好的,不是在运转时动态分配的,故称静态链表。例如以下静态链表的创建和输出。2动态链表的创建和删除动态链表的创建是指在程序执行时,建立起一个一个节点,并将它们衔接成一串,构成一个链表。动态链表不再是用时,应及时的删除,以释放动态链表占用的内存。 14.3 共用体共用体的类型阐明和变量的定义方式与构造体的类型阐明和变量定义方式完全一样,不同的是共用体变量中的一切成员占有同一个存储空间。14.3.1 共用体类型的阐明和变量定义1共用体类型阐明共用体类型阐明的普通方式为: union 共用体标识名

16、类型名1 共用体成员名1; 类型名2 共用体成员名2; 类型名n 共用体成员名n; ;阐明:union为关键字,是共用体类型的标志。共用体表示几个变量公用一个内存位置, 在不同的时间保管不同的数据类型和不同长度的变量。在内存单元中,一切成员具有一样的首地址,并且重叠在一同。共用体中的成员可以是简单变量,也可以是数组、指针、构造体和共用体。2共用体变量的定义用已阐明的共用体类型来定义共用体变量。和定义构造体变量类似,可以采用以下几种方式:先定义共用体类型再定义变量;定义共用体类型的同时定义变量;直接定义共用体变量。例如,有一共用体类型定义如下:union cif_ty char c; int i

17、; float f; ; 用已阐明的共用体类型来定义共用体变量。即用上面阐明的共用体类型cif_ty定义一个名为cif的共用体变量, 可写成: union cif_ty cif;也可以在定义共用体类型的同时定义共用体变量。例:union cif_ty char c; int i; float f; cif;还可以直接定义共用体变量。例:union char c; int i; float f; cif;在共用体变量cif中, 字符变量c,整型变量i,和浮点变量f公用同一内存位置。当一个共用体变量被定义时, 编译程序将按照共用体变量中最大的成员长度分配一块内存。同样也可以定义共用体数组变量或共用

18、体指针变量,例:union cif_ty ug3;union cif_ty *up=ug;当定义共用体指针时, 也要用-符号, 来访问共用体成员,可表示成: 共用体变量名-成员名 另外, 共用体类型和构造类型可以相互嵌套,共用体类型可以出如今构造体类型的定义中;构造体类型也可以出如今共用体类型的定义中。 14.3.2 共用体变量的援用1共用体变量中成员的援用可以运用以下三种方式援用共用体变量中的成员:1共用体变量名.成员名2指针变量名成员名3*指针变量名.成员名例如,对前一小节定义得共用体变量cif,如下援用其个成员:cif.c 援用char型成员c cif.i 援用int型成员icif.f

19、援用float型成员f共用体中的成员变量可参与其所属类型允许的任何操作。但在访问共用体成员时应留意,共用体变量中起作用的是最近一次存入的成员变量值,原有成员变量的值将被覆盖。 2共用体变量的赋值不能在定义公用体变量时对它初始化。对公用体变量赋值必需针对其成员进展,不能直接对公用体变量赋值,不过在ANSI C中允许具有一样类型的共用体变量相互赋值。例如:union cif_ty cif1, cif2;cif = 10; /*错误*/cif1.i = 10; /*正确*/cif2 = cif1; /*正确*/公用体变量的地址和它的各个成员的地址都一样,公用体数组的地址和它的第一个成员的地址一样。 3向函数传送共用体变量的值同构造体变量一样,共用体类型的变量可以作为实参进展传送,也可以传送共用体变量的地址。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号