第十章 结构体与共用体04
- 格式:ppt
- 大小:546.00 KB
- 文档页数:10
《零基础入门学习C语言》全套教程打包下载及在线观看至今小甲鱼仍然莫名其妙会受到这样的攻击,喜欢鱼C的朋友帮忙转载下吧,所有视频完全免费!不需要任何版权!尽量转,让那些狼心狗肺的家伙不能得逞!您也可以通过以下链接捐助鱼C,一元捐助鱼C重建家园:/item.htm?id=12584158611第八章_指针01在线观看:/v/bbk4575下载地址:/file/f62aa17e74#第八章_指针02在线观看:/v/bbk4576下载地址:/file/f65998ba66#第八章_指针03在线观看:/v/bbk4577下载地址:/file/f6eefe22e0#第八章_指针04在线观看:/v/bbk4578下载地址:/file/f6c1e2753e#第八章_指针05在线观看:/v/bbk4579下载地址:/file/f6deacb2cd#第八章_指针06在线观看:/v/bbk4587下载地址:/file/f63b6e3427#第八章_指针07在线观看:/v/bbk4588下载地址:/file/f6408885a4#第八章_指针08下载地址:/file/f628471891#第八章_指针09在线观看:/v/bbk4595下载地址:/file/f67d1ee34a#第九章_预处理01在线观看:/v/bbk4602下载地址:/file/f6e245329e#第九章_预处理02在线观看:/v/bbk4603下载地址:/file/f6e309a0bc#第九章_预处理03在线观看:/v/bbk4603下载地址:/file/f682a3ab82#第十章_结构体与共用体01在线观看:/v/bbk4605下载地址:/file/f63062384c#第十章_结构体与共用体02在线观看:/v/bbk4606下载地址:/file/f630899b0#第十章_结构体与共用体03在线观看:/v/bbk4607下载地址:/file/f6ad6c3d0c#第十章_结构体与共用体04在线观看:/v/bbk4626下载地址:/file/f68f130d23#第十章_结构体与共用体05在线观看:/v/bbk4627下载地址:/file/f6534cc2cd#第十章_结构体与共用体06在线观看:/v/bbk4628下载地址:/file/f627a55403#第十章_结构体与共用体07下载地址:/file/f69c8dbe94#第十一章_文件操作01在线观看:/v/bbk4638下载地址:/file/f616b686e0#第十一章_文件操作02在线观看:/v/bbk4639下载地址:/file/f68e579071#第十一章_文件操作03在线观看:/v/bbk4640下载地址:/file/f6d102b085#第十一章_文件操作04在线观看:/v/bbk4641下载地址:/file/f6d3860e5a#第十二章_位运算01在线观看:/v/bbk4642下载地址:/file/f6cf77d508#第十二章_位运算02在线观看:/v/bbk4643下载地址:/file/f672b24bc9#通告:1. 由于小甲鱼的免费视频影响到某些机构的盈利。
C语言中的结构体和共用体(联合体)/c-pointer-array/在C 语言中,结构体(struct)是一个或多个变量的集合,这些变量可能为不同的类型,为了处理的方便而将这些变量组织在一个名字之下。
由于结构体将一组相关变量看作一个单元而不是各自独立的实体,因此结构体有助于组织复杂的数据,特别是在大型的程序中。
共用体(union),也称为联合体,是用于(在不同时刻)保存不同类型和长度的变量,它提供了一种方式,以在单块存储区中管理不同类型的数据。
今天,我们来介绍一下C 语言中结构体和共用体的相关概念和使用。
结构体 / struct结构体的定义声明一个结构体类型的一般形式为:struct 结构体名 {成员列表};其中,成员列表中对各成员都应进行类型声明,即:类型名成员名;例如,我们需要在程序中记录一个学生(student)的数据,包括学号(num)、姓名(name)、性别(sex)、年龄(age)、成绩(score)、地址(addr)等,如下图所示:如果要表示图中的数据结构,但C 语言并没有提供这种现成的数据类型,因此我们需要用定义一种结构体类型来表示。
truct student {int num;char name[20];char sex;int age;float score;char addr[30];};上述定义了一个新的结构体类型 struct student(注意,struct 是声明结构体类型时所必须使用的关键及,不能省略),它向编译系统声明,这是一个“结构体类型”,它包括 num、name、sex、age、score、addr 等不同类型的数据项。
应当说,这里的 struct student 是一个类型名,它与系统提供的标准类型(如 int、char、float、double 等)具有同样的作用,都可以用来定义变量的类型。
结构体变量前面只是声明了一个结构体类型,它相当于一个模型,但其中并无具体的数据,编译系统对其也不分配实际的内存单元。
第10章结构体与共用体1.以下叙述中错误的是()。
A) 可以通过typedef增加新的类型B) 可以用typedef将已存在的类型用一个新的名字来代表C) 用typedef定义新的类型名后,原有类型名仍有效D) 用typedef可以为各种类型起别名,但不能为变量起别名参考答案:A【解析】关键字typedef的作用只是将C语言中的已有的数据类型作了置换,并不是增加新的类型,所以A)错误。
2.以下关于typedef的叙述错误的是A) 用typedef可以增加新类型B) typedef只是将已存在的类型用一个新的名字来代表C) 用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名D) 用typedef为类型说明一个新名,通常可以增加程序的可读性参考答案:A【解析】typedef并不是增加了新类型,而是用一个新名字替代已存在的类型,不能为变量说明一个新名,使用typedef可以增强移植性。
所以A选项错误。
3.若有以下语句typedef struct S{ int g; char h; } T;以下叙述中正确的是A) 可用S定义结构体变量B) 可用T定义结构体变量C) S是struct 类型的变量D) T是struct S类型的变量参考答案:B【解析】本题考查typedef重新声明一种结构体类型,那么T为结构体类型,而不是结构体变量,所以B选项正确。
4.设有以下语句typedef struct TT{ char c; int a[4]; } CIN;则下面叙述中正确的是A) CIN是struct TT类型的变量B) TT是struct类型的变量C) 可以用TT定义结构体变量D) 可以用CIN定义结构体变量参考答案:D【解析】本题考查typedef重新声明一种结构体类型,其中CIN为结构体类型名,而不是结构体变量,所以D 选项正确。
5.以下叙述中错误的是A) 可以用typedef将已存在的类型用一个新的名字来代表B) 可以通过typedef增加新的类型C) 用typedef定义新的类型名后,原有类型名仍有效D) 用typedef可以为各种类型起别名,但不能为变量起别名参考答案:B【解析】本题考查typedef的用法,typedef并不是增加一种新的类型,而是对已存在的类型用一个新的名字来代表,所以B选项错误。
结构体与共用体笔记定义结构体C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体(structre)。
在其他一些高级语言中称为“记录”.定义后的结构体类型和系统提供的标准类型(如int, char, float, double 等)具有相似的作用,都可以用来定义变量,只不过int等类型是系统已声明的,而结构体类型是由用户根据需要在程序中指定的。
定义一个结构体类型的一般形式为:struct 结构体名{ 成员表列};注意:1.结构体类型的名字是由一个关键字struct和结构体名组合而成的(例如struct Student) ,结构体名是由用户指定的,又称“结构体标记”,以区别于其他结构体类型。
上面的结构体声明中Student就是结构体名(结构体标记)。
2.花括号内是该结构体所包括的子项,称为结构体的成员。
“成员表列"(member list)也称为“域表”(field list),成员表列由若干个成员组成,每一个成员是结构体中的一个域。
对每个成员也必须作类型说明,其形式为:类型说明符成员名;成员名的命名应符合标识符的书写规定。
例如:struct stu{int num;char name[20];char sex;float score;};3.一个结构体的成员可以属于另一个结构体类型(嵌套)。
例如:struct Date //声明一个结构体类型struct Date{ int month;//月int day;//日int year;//年}struct Student//声明一个结构体类型struct Student{ int num;char name[20];char sex;int age;struct Date birthday;//成员birthday属于struct Date 类型char addr[30];};结构体类型变量1.定义结构体类型变量说明结构变量有以下三种方法。
结构体与共用体
例如:20020945
有如下定义:struct sk
{int a;float b;} data;
int *p 则要使p指向data中的a域,正确的赋值语句是:C (A)p=&a;错误在于结构体变量的成员,必须通过定义的结构
体变量的名来引用其成员
(B)p=&data.a; data.a就是变量的值,而不是成员a地址
(C)p=&data.a;
(D)*p=data.a 同B解释
“()”优于“->”(指向)优于“++”
结构体类型还允许嵌套定义!
使用共用体类型数据时要注意:1,同一段程序可以用来存放几种不同的数据,但是在读写瞬间只能存放其中一种,而不是同时存放几种。
系统分配的空间为其中一个所需内存最大的成员的空间,不累加!!!
共用体变量的地址和他的各成员的地址都相同,即无论哪个成员起始地址都相同(参考19960946)。
typedef 原类型名新类型名
typedef v1 int v3
typedef 可以声明各种类型名,但是不能用用来定义变量。
他只为已存在的类型增加一个类型名,并不是创造新类型。
(参考20000930和20020947)。