- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 结构和联合
main( ) { struct list *p; printf(No\tName\tAtomic Weight\n); for (p=tab; ptab+4; p++) printf(%d\t %s\t %f\n, p-i, p-name, p-w); } tab数组 1 H tab[0] 1.008 2 He tab[1] 4.0026 3 Li tab[2] 6.941 4 Be tab[3] 9.01218 p p p p p No Name Atomic Weight 1 H 1.008 2 He 4.0026 3 Li 6.941 4 Be 9.01218 9.5 联合(共用体) 在实际处理中为了方便处理,有时需要在不同的时刻将不同类型的值存放在同一变量中,而在任一时刻,该变量仅含特定类型的值,这种变量就是联合类型的变量(简称联合或联合类型变量)。 联合的定义方式就是将struct用union代替,其它形式同结构相同。如:假定一个常量可能是int、double或字符串,为了用同一个存储区域来存放,可以说明如下的联合 union unode{ int ival; double dval; char str[100]; } u; 分配存储单元时,编译程序按联合的成员中最长的那一个类型为联合变量分配存储空间。 联合变量有地址,可以用运算符对联合取地址,可以说明指向联合的指针。联合成员的引用和结构成员的引用形式相同,一般为下列三种形式之一 联合变量名.成员名 指向联合的指针-成员名 (*指向联合的指针).成员名 注意:联合成员彼此不是并存的,任一时刻联合变量中指含有其中一个成员,该成员是最近一次存入联合的那一个成为当前成员。 9.6 用typedef定义类型名 typedef说明用于为已存在的类型名定义一个别名。typedef说明的一般形式 typedef 类型区分符 说明符表; 其中,说明符表中的说明符是类型定义名。类型区分符可以是任何基本类型、结构或联合类型区分符,也可以是由typedef定义的类型名。为了醒目,一般由typedef定义的类型名使用大写,例如 typedef int LENGTH; 定义LENGTH是int的别名,它可以和int一样说明变量或函数。 * * * * * * * 第9章 结构和联合 本章要点 C语言的结构类型。 结构数组。 指向结构的指针。 C语言的动态数据结构。 联合类型。 本章难点 结构指针和C语言的动态数据结构。 9.1 结构的说明和引用 9.2 结构的指针 9.3 结构和函数 9.4 结构数组 9.5 联合(共用体) 9.6 用typedef定义类型名 9.1 结构的说明和引用 在实际中常常描述同一对象的不同属性,如一个学生有学号、姓名、性别、年龄、各科分数,表示这些属性的数据具有不同的类型,因而不能用数组表示。C语言提供了一种数据结构,可以把这些不同类型的数据组成一个整体,这就是结构类型。 结构类型是各种结构的总称,是一种构造类型。一个结构变量可以由不同类型的成员变量组成,这些成员变量又称为结构的域、分量。结构的所有成员除自身的名字外,还拥有共同的名字,即结构变量名。 9.1.1 结构说明 9.1.2 结构的引用 9.1.1 结构说明 struct 结构体名 { 数据类型1 成员名1; 数据类型2 成员名2; …… 数据类型n 成员名n; }; 结构体类型定义的一般形式: struct为关键字; 结构体名是用户定义的类型标识。 { }中是组成该结构体的成员。成员的数据类型可以是C语言所允许的任何数据类型。 在定义结构体类型的同时定义变量 例如: struct student { char num[8],name[20],sex; int age; float score; }st[30]; struct 结构体名 { 成员定义表; }变量名表; 直接定义结构体类型变量 例如: struct { char num[8],name[20],sex; int age; float score; }st[30], a, b, c; struct
文档评论(0)