网站大量收购独家精品文档,联系QQ:2885784924

[工学]第14章 结构体、共用体、枚举和typedef.ppt

[工学]第14章 结构体、共用体、枚举和typedef.ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]第14章 结构体、共用体、枚举和typedef

第14章 结构体、共用体、枚举和typedef 程序设计中,如何合理组织数据是门大学问,前面介绍过的数组是种组织数据的方式,但数组只适用于同类型的数据,如果类型不同又当如何?而且,现实中,很多东西都具有不同的属性,以人为例,像姓名、性别、身高等等都是其属性,如何合理存储并方便地访问这些信息,是本章介绍的内容。 14.1 什么是结构体 仍以人为例来介绍,要管理姓名、单位、Email地址、联系电话等信息,现实生活中,很多人采用名片的形式,将这些信息印在一张卡片上。收集的一张张名片大大方便了数据的管理,将这种理念借鉴到C语言程序设计中,是否有类似于名片的那么一种变量呢? 有,答案就是“结构体变量”,是一种复合变量,在进一步说明结构体变量前,先来看“结构体”的概念,结构体和结构体变量的关系类似与类型与普通变量的关系,结构体中说明了结构体变量的信息格式,而结构体变量是结构体的实例。 14.1.1 结构体的定义 只有定义了一个结构体,才能声明并使用结构体变量,正如,只有确定了名片上要印什么内容,才能开始印刷名片。结构体的定义就是说明结构体变量要存储什么信息的过程。 C语言提供了关键字struct来定义一个结构,一般形式的结构定义为: struct 结构名称(或称标识) { 存储数据列表;(或称成员变量列表) }; 注意:在定义结构时,一定不要忘记花括号后的分号,因为结构的定义可以看成一条完整的C++语句,否则编译器会报错。 举例来说, struct person { char name[20]; int age; char email[50]; }; 14.1.2 声明结构体变量 以上面person结构为例,定义完毕后,person就可以看成是一种类型,可以通过下述形式声明结构体变量zangsan: struct person zangsan; 注意区分person和zangsan,person只是结构体定义,是种规范说明,编译器并不为其分配内存空间,而zangsan是实实在在的结构体变量,占据一定的内存空间。 在定义结构体的同时也可以完成一个或多个结构体变量的声明,举例来说: struct person { char name[20]; int age; char email[50]; }zangsan,lisi,wangwu,*zaoliu; 上述代码在定义结构体person的同时,一口气声明了3个结构体变量:zangsan,lisi,wangwu,甚至还声明了一个指向person结构的指针zaoliu。 14.1.3 初始化结构变量 在声明结构变量的同时,可以进行变量的初始化,对结构体中每个数据初始化,用逗号隔开,并用花括号包裹起来,举例来看: struct person zangsan={“Zang San”, 24, “zs@163.com”}; 还可以将结构体定义,结构体变量声明和初始化放在一起来完成,如: struct person { char name[20]; int age; char email[50]; }zangsan={“Zang San”, 24, “zs@163.com”}, *pzs=zangsan; 14.1.4 访问结构体成员 习惯上将诸如字符串name、int变量age和字符串email等称为结构体person及其声明变量的“数据成员”,简称“成员”。 声明了一个结构体变量后,可以使用成员操作符(.)来访问各个成员(内部存储的数据),如,zangsan.age和zangsan.emal分别代表zangsan这个变量(结构体变量)中存储的姓名、年龄和email等信息,来看一段示例: 代码? 访问结构体变量中的数据成员StructSample 14.1.5 结构体定义的位置 读者可以做个有趣的尝试:将中结构体定义的部分转移到main函数的后面,重新编译运行,会发生什么? 编译器会报一大堆的错误,正如“使用变量前必须先对其声明”一样,在使用结构体类型声明结构体变量之前,必须要先进行结构体的定义,编译器据此才知道如何为结构体中的数据成员分配内存空间,才能声明结构体变量。 除了如的定义方式外,结构体还可以定义在函数(包括main函数)中,两种定义方式的区别在于结构体可见域不同,如果定义在函数外,从定义处到本文件结束,结构体都可见,可用结构体声明结构体变量,但如果定义在特定函数中,只有定义处到该函数结束,结构体可见,如果在函数外使用结构体声明结构体变量,可能会引发错误。 一种推荐的写法是将结构体定义在头文件中,只要某文件A包含了此头文件,便可在A中自由声明结构体变量。 14.1.6 结构体变量赋值 C语言不允许使用一个数组直接为另一个数组赋值,但使用一个结构体变量为另一个结构体变量赋值是合法

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档