- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
结构体与指针 结构体指针 可以设定一个指针变量用来指向一个结构体变量。此时该指针变量的值是结构体变量的起始地址,该指针称为结构体指针。 结构体指针与前面介绍的各种指针变量在特性和方法上是相同的。与前述相同,在程序中结构体指针也是通过访问目标运算“*”访问它的对象。结构体指针在程序中的一般定义形式为: struct 结构体名 *结构指针名; 其中的结构体名必须是已经定义过的结构体类型。 结构体与指针 例如,对于上一节中定义的结构体类型struct student,可以说明使用这种结构体类型的结构指针如下: struct student *pstu; 其中pstu是指向struct student结构体类型的指针。 结构体指针的说明规定了它的数据特性,并为结构体指针本 身分配了一定的内存空间。但是指针的内容尚未确定,即它 指向随机的对象。 结构体与指针 当表示指针变量p所指向的结构体变量中的成员时,“(*结构体指针名).成员名”这种表示形式总是需要使用圆括号,显得很不简炼。因此,对于结构体指针指向的结构体成员项,给出了另外一种简洁的表示方法,如下表示: 结构体指针名-成员名 它与前一种表示方法在意义上是完全等价的。例如,结构体指针p指向的结构体变量中的成员name可以表示如下: (*p).name 或 p-name 共用体 共用体的概念 在C++语言中,不同数据类型的数据可以使用共同的存储区域,这种数据构造类型称为共用体,简称共用,又称联合体。共用体在定义、说明和使用形式上与结构体相似。两者本质上的不同仅在于使用内存的方式上。 定义一个共用体类型的一般形式为: union 共用体名 { 成员表列; }; 共用体 例如: union gy { int i; char c; float f; }; 就里定义了一个共用体类型union gy,它由三个成员组成,这三个成员在内存中使用共同的存储空间。由于共用体中各成员的数据长度往往不同,所以共用体变量在存储时总是按其成员中数据长度最大的成员占用内存空间。 共用体 在这一点上共用体与结构体不同,结构体类型变量在存储时总是按各成员的数据长度之和占用内存空间。 例如,定义了一个结构体类型: struct gy { int i; char c; float f; }; 则结构体类型struct gy的变量占用的内存大小为2+1+4=7个字节(不考虑字节对齐) 。 共用体 在使用共用体类型变量的数据时要注意:在共用体类型变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员就失去作用。如有以下赋值语句: a.i = 1; a.c = ’a’; a.f = 1.5; 完成以上三个赋值运算以后,a.f是有效的,a.i和a.c已经无意义了。 共用体 在程序中经常使用结构体与共用体相互嵌套的形式。 即共用体类型的成员可以是结构体类型,或者结构体类型的 成员是共用体类型。 共用体 例如,下列结构体类型datas的第三个成员是共用体类型: struct datas { char *ps; int type; union { float fdata; int idata; char cdata; }udata; }; 枚举 枚举类型的定义形式如下: enum 枚举名{ 枚举成员列表 }; 在枚举成员列表中列出所有可能的取值,以分号结尾。注意和结构体、联合体类似,”enum 枚举名”是新定义的类型名。 举例如下: enum TimeofDay { morning, afternoon, evening }; 枚举 枚举变量的声明也有这三种方式,示例如下: 方式一:先定义类型,再声明变量 enum TimeofDay { morning, afternoon, evening }; enum TimeofDay a, b; * 枚举 方式二:在定义类型的同时,声明变量 enum TimeofDay { morning, afternoon, evening } a, b; * 枚举 方式三:直接定义无名枚举变量 enum { morning, afternoon, evening } a, b; * 枚举 枚举变量的使用 枚举成员都是常量,因此,一旦定义了枚举类型,在程序中,就不能用赋值语句再
您可能关注的文档
- 汽车总线控制技术与检修 教学课件 作者 骆孟波 主编 郝金魁 副主编 动力传输系统.ppt
- 汽车总线控制技术与检修 教学课件 作者 骆孟波 主编 郝金魁 副主编 多路传输系统结构类型.ppt
- 汽车总线控制技术与检修 教学课件 作者 骆孟波 主编 郝金魁 副主编 多路传输系统应用.ppt
- 汽车总线控制技术与检修 教学课件 作者 骆孟波 主编 郝金魁 副主编 舒适系统.ppt
- 汽车总线控制技术与检修 教学课件 作者 骆孟波 主编 郝金魁 副主编 舒适系统CAN.ppt
- 汽车总线控制技术与检修 教学课件 作者 骆孟波 主编 郝金魁 副主编 诊断策略.ppt
- 汽车总装技术 教学课件 作者 海争平.ppt
- 汽油发动机电控系统检测与修复 教学课件 作者 杨洪庆 目录.ppt
- 汽油发动机电控系统检测与修复 教学课件 作者 杨洪庆 情境1.ppt
- 汽油发动机电控系统检测与修复 教学课件 作者 杨洪庆 情境2.ppt
文档评论(0)