- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
高级C程序设计张希机电学院深圳大学 Chapter 10 结构体 与类结构体前面学习的字符型、整型、单精度浮点型等基本数据类型,都是由C编译系统事先定义好的,可以直接用来声明变量;而结构体类型是一种由用户根据实际需要自己构造的数据类型,所以必须要“先定义,后使用”。也就是说,用户必须首先构造一个结构体类型,然后才能使用这个结构体类型来定义变量或数组。结构体类型结构体类型”是一种构造数据类型,它由若干“成员”组成,每一个成员可以是相同、部分相同、或完全不同的数据类型,对每个特定的结构体都需要根据实际情况进行结构体类型的定义,也就是构造它,以明确该结构体的成员及其所属数据类型。C语言中提供的定义结构体类型的语句格式为:struct 结构体类型名{ 数据类型1 成员名1; 数据类型2 成员名2; … 数据类型n 成员名n;};结构体类型其中,struct是C语言中的关键字,表明是在进行一个结构体类型的定义。结构体类型名是一个合法的C语言标识符,对它的命名要尽量做到“见名知义”。比如,描述一个学生的信息可以用 “stu”,描述一本图书的信息可以使用“bookcard”等。由定义格式可以看出,结构体数据类型由若干个数据成员组成,每个数据成员可以是任意数据类型。最后的分号表示结构体类型定义的结束。例如,定义一个学生成绩的结构体数据类型如下:struct student { char no[8]; /*学号*/ char name[8]; /*姓名*/ float eng; /*英语成绩*/ float math; /*数学成绩*/ float ave ; /*平均成绩 */};在这个结构体中有6个数据成员,分别是no、name、eng、math和ave,前2个是字符数组,分别存放学生的学号和姓名信息;eng、math、ave是单精度实型,分别存放英语、数学以及平均成绩。结构体类型另外,结构体可以嵌套定义,即一个结构体内部的成员的数据类型可以是另一个已经定义过的结构体类型。例如:struct date{ int year; int month; int day;};struct student{ char name[10]; char sex /*定义性别,m代表男,f代表女*/; struct date birthday; int age; float score;};在上述代码段中,先定义了一个结构体类型struct date,然后在定义第二个结构体类型时,其成员birthday被声明为struct date结构体类型。这就是结构体的嵌套定义。结构体类型关于结构体说明如下。 ⑴ 结构体的成员名可以与程序中其它定义为基本类型的变量名同名,同一个程序中不同结构体的成员名也可以相同,它们代表的是不同的对象,不会出现冲突。 ⑵ 如果结构体类型的定义在函数内部,则这个类型名的作用域仅为该函数;如果是定义在所有函数外部,则可以在整个程序中使用。定义结构体变量结构体类型的定义只是由用户构造了一个结构体,但定义结构体类型时系统并不为其分配存储空间。结构体类型定义好后可以像C中提供的基本数据类型一样使用,即可以用它来定义变量、数组等,称为结构体变量或结构体数组,系统会为该变量或数组分配相应的存储空间。在C语言中定义结构体类型变量有以下3种方法:定义结构体变量1. 先定义结构体类型后定义变量 例如,先定义一个结构体类型: struct student { char no[8] ; /*学号*/ char name[8]; /*姓名*/ float eng; /*英语成绩*/ float math; /*数学成绩*/ float ave ; /*平均成绩 */ }; 我们可以用定义好的结构体类型struct student来定义变量,该变量就可以用来存储一个学生的信息了,定义如下:struct student stu[30]; /*定义结构体类型的数组*/这里定义了一个包含30个元素的数组,每个数组元素都是一个结构体类型的数据,可以保存30个学生的信息。struct student stu1; /*定义一个结构体类型的变量*/说明:当一个程序中多个函数内部需要定义同一结构体类型的变量时,应采用此方法,而且结构体类型应定义为全局类型。定义结构体变量2. 定义结构体类型的同时定义变量 语法形式如下:struct 结构体标识符{ 数据类型1 成员名1; 数据类型2 成员名2; …… 数据类型n 成员名n;} 变量1, 变量2…,变量n;其中变量1, 变量2…,变量n为变量列表,遵循变量的定义规则,彼此之间通过逗号分割。说明:在实际的应用中,定义结构体同时定义结构体变量适合于定义局部使用的结构体类型或结构体类型变量,例如在一个文件内部或函数内部。
文档评论(0)