- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
华中科技大学计算机学院C语言课程组 C语言与程序设计The C Programming Language 第9章 结构与联合 结构与联合都属于C语言的构造类型。 对结构与联合而言,都需要先定义结构类型和联合类型,然后再根据已经定义的结构类型来定义对应的结构变量,以及用已经定义的联合类型来定义对应的联合变量。 本章将介绍结构类型的定义,结构变量的声明,结构类型的使用,结构类型的指针,有结构类型参数的函数、结构数组、字段结构及联合类型的定义,联合变量的声明和使用。 9.1 结构概述 程序设计语言的发展总是与数据类型的发展、丰富和完善联系在一起的。变量可以认为是内存单元的有名表示。 通过变量可以很容易地描述日常遇到整型、浮点型、字符型数据。 但是,变量在处理大量同类型数据时就暴露出名字多、不利于用循环处理等一系列不足,而数组则是处理大量同类型数据的有力工具。 通过数组名和下标,可以方便地描述大量同类型数据,并且可以充分利用循环来进行快速处理。 9.1 结构概述 另外,现实生活中又存在大量这样一类应用需求,即如何将类型不同而关系又非常密切的数据项组织在一起,统一加以快速处理。 例如,描述全班、全年级每位同学的英语、高等数学、普通物理、C语言程序设计等课程的学习情况,需要学号、班级、姓名及各科成绩等属性来描述。 如果还要分析统计男女同学的学习情况,则还要增加性别属性。 在这个问题中,学号、班级、姓名往往用字符数组描述、性别往往用字符型描述,各科成绩则往往用整型或浮点型描述。对这些大量不同类型数据项,用数组已经不能有效解决问题。 因此,如何将不同数据类型的成员(即数据项)组织起来,形成新的构造类型就是结构产生的实际背景。 9.1 结构概述 结构类型是一种将不同数据类型的成员组织起来所形成的一种新的构造类型。 在程序设计中,要先确定需要被组织的数据类型,由这些数据类型说明的标识符称为结构类型的成员;通过定义结构类型将这些成员组织起来,形成新的数据类型; 再通过结构类型来声明对应的结构变量、结构指针、或结构数组。 通过对结构变量、结构指针或结构数组中成员的操作最终完成所需要解决的计算任务。 有些教材中将结构类型称为结构体、聚合类型。 C语言中的结构在其他程序设计语言中往往称为记录(record),以记录为基础,可以进一步构造文件、基于记录的数据库及许多动态数据结构。 9.2 结构类型声明和结构变量的声明及初始化 本节介绍如何通过声明定义新的数据类型—结构类型; 如何根据已经定义的结构类型声明对应的结构变量; 以及对结构变量进行初始化的方法。 9.2.1 结构类型的声明 在声明结构类型时,需要规定该结构类型包括哪些成员,要说明成员的数据类型和名字。 然后可以根据该结构类型说明对应结构类型的变量。结构类型在语法上的作用与int、char、float、double一样,用以说明该类型的结构变量。 声明结构类型是创建用户自定义数据类型的过程,它并不创建对象,即不进行存储分配。 只有被结构类型说明的结构变量在程序运行的时候才会被分配存储。 声明结构类型的一般形式 struct 结构类型名{ 成员声明表 }; 其中,struct是关键字,用以说明结构类型。 结构类型名是该结构类型的名字,它应该是C语言的合法标识符,它标识的是一种新的数据类型名。 不同类型的结构可以通过名字来相互区分。 一对花括号界定的是成员声明表,成员声明表内是成员声明序列,它允许多个不同数据类型的声明。 成员声明表的一般形式为: 数据类型1 成员名11,成员名12,…,成员名1k; … 数据类型n 成员名n1,成员名n2,…,成员名nm; 数据类型1 和数据类型n可以相同,也可以不同。 每个声明允许用逗号为分隔符说明多个同类型的成员。结构类型的声明应该以分号结束。 以学生的学习情况为例的结构类型的声明 以学生的学习情况描述为例,其结构类型的声明可以表示如下: struct stu_study{ /* stu_study是结构类型名 */ char num[12]; /* 学号成员,字符数组类型 */ char name[9]; /* 姓名成员,字符数组类型 */ char sex;/* 性别成员,字符类型 */ int English; /* 英语成员,整型 */ int Math,Physics,C;/* 数学、物理、C语言,整型 */ }; 该声明定义了一个struct stu_study的结构类型,stu_study是结构类型名,用以区分其他类型的结构。 struct stu_study实际上是一种新的构
您可能关注的文档
最近下载
- 比亚迪元PLUS-EV车型技术培训课件.pdf VIP
- 河南对口高考计算机试题及答案.pdf VIP
- 秋冬季常见传染病防治知识.pptx VIP
- 广东省安全生产领域风险点危险源排查管控工作指南.pdf VIP
- 2023年专业技术人员继续教育公需科目-东营市专业技术人员继续教育考试参考题库(含答案).docx VIP
- 外国建筑史试题及答案-(1) .pdf VIP
- 【基于单片机太阳能自动追光系统的设计9400字】.docx
- 法院档案数字化服务 投标方案(技术标 ).doc VIP
- 填写模板(积极分子考察表&入党志愿书&预备党员考察表).doc VIP
- 鲁科版二年级上册综合实践活动:第一单元 学习好习惯 《2、养成学习好习惯》教案.docx VIP
文档评论(0)