- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 10章
结构体与共用体
学习目标 本章主要介绍结构体的定义和使用方法,然后介绍链表的概念和相关操作,最后介绍两种新的数据类型——共用体和枚举。通过本章的学习,需要掌握结构体的概念与结构体类型的定义方法,熟练掌握结构体变量的定义、引用和初始化方法,掌握链表的概念,熟练掌握链表的相关操作,了解共用体和枚举的概念及其使用方法。
实际问题中,经常需要对一些类型不同但又相互关联的数据进行处理。比如,对一个学生而言,他的学号(num)、姓名(name)、性别(sex)、年龄(age)、成绩(score)等数据都与该学生有联系。如果将num、name、sex、age、score分别定义成相互独立的简单变量,则无法反映它们之间的内在联系;又因为这些数据彼此类型不同,而数组只能对同种类型的成批数据进行处理,所以,此时也无法使用数组。这就需要有一种新的数据类型,它能将具有内在联系的不同类型的数据组合成一个整体,在C语言里,这种数据类型就是“结构体”。
结构体属于构造数据类型,它由若干成员组成,成员的类型既可以是基本数据类型,也可以是构造数据类型,而且可以互不相同。由于不同问题需要定义的结构体中包含的成员可能互不相同,所以,C语言只提供定义结构体的一般方法,结构体中的具体成员由用户自己定义。这样,编程人员可以根据实际需要定义各种不同的结构体类型。
10.1 结 构 体
结构体遵循“先定义后使用”的原则,其定义包含两个方面,一是定义结构体类型;二是定义该结构体类型的变量。
10.1.1 结构体类型的定义
格式:struct 结构体类型名
{
类型1 成员名1;
类型2 成员名2;
(
类型n 成员名n;
};
功能:定义一种结构体类型。
例如,图10.1所示结构体类型可有如下定义:
num name sex birthday score year month day 图10.1 struct student结构体类型组织结构图
struct date
{
int year;
int month;
int day;
};
struct student
{
int num;
char name[20];
char sex;
struct date birthday;
float score;
};
【说明】① “结构体类型名”与“成员名”都遵循标识符命名规则。
② 成员类型可以是除本身所属结构体类型外的任何已有数据类型。
③ 在同一作用域内,结构体类型名不能与其它变量名或结构体类型名重名。
④ 同一个结构体各成员不能重名,但允许成员名与程序中的变量名、函数名或者不同结构体类型中的成员名相同。
⑤ 结构体类型的作用域与普通变量的作用域相同:在函数内定义,则仅在函数内部起作用;在函数外定义,则有全局作用域。
【注意】结构体类型定义的末尾必须有分号。
10.1.2 结构体变量的定义、引用和初始化
1.结构体变量的定义
(1)先定义结构体类型,再定义结构体变量。如
struct date
{
int year;
int month;
int day;
};
struct date date1,date2;
(2)定义结构体类型的同时定义结构体变量。如
struct student
{
int num;
char name[20];
char sex;
struct date birthday;
float score;
}stu1,stu2;
(3)直接定义结构体变量。如
struct
{
int num;
char name[20];
char sex;
struct date birthday;
float score;
}stu1,stu2;
【说明】① 结构体类型与结构体变量是两个不同的概念。前者只声明结构体的组织形式,本身不占用存储空间;后者是某种结构体类型的具体实例,编译系统只有定义了结构体变量后才为其分配内存空间。
② 结构体变量各成员存储在一片连续的内存单元中。
③ 可以用sizeof测出某种基本类型数据或构造类型数据在内存中所占用的字节数。如pirntf(%d,sizeof(struct student));
【思考】测试并分析struct student类型的结构体变量在内存所占用存储空间的长度。
2. 结构体变量的引用
(1)使用成员运算符引用结构体变量的成员。
格式:结构体变量名.成员名
功能:引用结构体变量中指定名称的成员变量。如
struct student stu1,stu2;
int age;
stu1.
您可能关注的文档
- CPU总结.doc
- CPU工作原理知识.doc
- cpu工作原理浅析.doc
- CPU是Central Processing Unit.doc
- CPU德州仪器.doc
- CPU技术.doc
- CPU核心介绍.doc
- CPU百科知识大全.doc
- CPU的一些基础知识及其参数.doc
- CPU的主要技术特征.doc
- 2025年厨房用品电商仓储机器人集群行业政策影响及应对策略.docx
- 2025年厨房用品电商仓储机器人集群智能化改造方案报告.docx
- 2025-2026学年高中生物学选择性必修2 生物与环境北师大版(2019)教学设计合集.docx
- 2025年厨房用品电商仓储机器人集群行业技术发展动态与展望.docx
- 2025年厨房用品电商仓储机器人集群行业应用案例精选与启示报告.docx
- 2025年厨房用品电商仓储机器人集群行业政策解读与市场影响研究报告.docx
- 2025年厨房用品电商仓储机器人集群项目团队建设与培训方案报告.docx
- 2025年厨房用品电商仓储机器人集群项目可行性研究及市场前景报告.docx
- 2025年厨房用品电商仓储机器人集群项目实施方案与项目成本预算报告.docx
- 2025-2026学年高中生物学选择性必修2 生物与环境人教版(2019)教学设计合集.docx
文档评论(0)