- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
C语言中级培训十一、扩展类型
结构体是一种类型应用而产生的扩展类型。其中包含了类型的嵌套概念。恰是这一点表现了C语言的“成长性”。语法形式:存储模式:用途:用于整合五花八门的类型为一种新类型。
结构体特点:可以嵌套定义;类型可以无名;各成员彼此独立存在;使用“.”或“-”运算符访问各成员;结构体变量可整体赋值;可以对结构体变量整体初始化;可以对变量或各分量取地址;不可以在定义结构体类型时让成员带有初值。
强调:对于VC++(32)平台,结构体变量对于内存的占用以及原因。(与TC的区别)看后页例:
结构体类型的怪现象两个结构体声明中的成员类型、名称、个数完全一致,只是顺序不同,它们会一样大小吗?structAstructB{{charc;charc;inta;charc;floatf;inta;charc;floatf;};};为什么?1612
结构体类型的怪现象其实一点也不怪,C/C++是按pack算法的对齐基数来决定结构体大小的。若有structA{longl;inti;shorts;charc;};若按基数为1字节计,该结构体的大小为15;按2字节计,大小为16;按8字节计,大小为32。而基数是按字长的整数倍来确定的(为了效率),并且各编译器各有自己的原则,甚至有的编译器还可以用选项指定倍数。
课堂思考:如何运用结构体的特点,设计一个链表模拟”自由链表”——链表的每个结点都控制着一个堆空间,且各空间的大小不相等?
共用体也是一种类型的扩展。语法形式:存储模式:区别特点:也可以嵌套定义。可以无名。
共用体的妙用:比如,你构造一个共用体:unionKeyCode{ shortintkeynum;charByte[2];//以数组的视角观察变量}kc;当你用kc接受键盘输入的字符时,计算机将把它转换成一个双字节的整数编码,其中Byte[1]存放的是高字节的值,是键盘的扩展码;Byte[0]存放的是低字节的值,即ASCII码;而keynum则是它的整体值。用类似的方法可以解析多个字节的内存变量的高低字节的值,免去了人工用位运算解析的麻烦。
枚举是一种基本类型。本质上是一种整型。语法形式:存储模式:区别特点:可用值全部罗列,除此以外非法;不可以嵌套定义;也可以无名。
枚举在标准C中,枚举型的内存大小等于sizeof(int)。但在C++中则并非是int的大小,它可能更大或更小,完全取决于枚举常量的取值,很小时,可能是char或short型;很大时,则可能是int或long型;究竟是多大,完全由你所使用的编译器版本所决定。这说明一个枚举变量所占字节数是无法预先确定的、是与平台相关的。一个枚举常量或变量可以赋值给整型变量(除非超常),但整型变量不可以直接赋值给枚举变量,须强制转换,即使强转后赋值成功,枚举变量的值也不见得可用。因为枚举常量的跳跃性使得整数值可能落入“空当”中。
关于外连接和内连接首先弄清作用域、连接的概念。作用域:是描述了程序中可以访问到一个标识符的区域。C99已将for、while、do-while、if所控制的语句范围都视为块,不管是否用{}罩起来。连接:凡具有代码块和函数原形作用域的变量是空连接的。这意味着它们属该块私有的,别处不能使用。一般地说,在文件范围内声明的标识符(不含函数内或类内),对于程序的所有编译单元都是可见的,这就叫外部连接。若在文件范围内声明标识符时加static修饰,则为内部连接,即仅供本文件使用。在头文件中声明的也默认为内部连接。
关于外连接和内连接内部连接意味着可以在其他编译单元中使用而不会发生名冲突的标识符。——尽管同名,但不是同一个。extern则恰相反,它表示对所有的编译单元都是可见的,是同一个。这两种存储类型都在使用静态数据区。
关于生命期生命期:是指某标识符在内存中保留的时间。五种存储类型一览表:存储类型生命期作用域链接声明
您可能关注的文档
- BP碳排放计算器.ppt
- b语教师培训材料二中陈运江老师.ppt
- C631C651型排尘离心通风机结构特点.ppt
- C++程序生成过程.pptx
- CCNA SME1 个人计算机和应用程序.ppt
- cf会员礼包怎么领取.pptx
- cf单机版终结者模式下载.pptx
- cf巨人城废墟31关.pptx
- cf暗影模式怎么设置.pptx
- CF录像保存在哪里.pptx
- 部编版二年级下册道德与法治期末考试试卷及答案(精品).docx
- 部编版二年级下册道德与法治期末考试试卷及答案(基础+提升).docx
- 2025年小学语文名师工作室工作计划(精选12篇) .pdf
- 部编版二年级下册道德与法治期末考试试卷及答案(网校专用).docx
- 部编版二年级下册道德与法治期末考试试卷含完整答案【夺冠系列】.docx
- 中国如何在2030年实现PM2-5空气质量全面达标_摘要.docx
- 部编版二年级下册道德与法治期末考试试卷及解析答案.docx
- 部编版二年级下册道德与法治期末考试试卷及答案下载.docx
- 部编版二年级下册道德与法治期末考试试卷含完整答案(全国通用).docx
- 部编版二年级下册道德与法治期末考试试卷含完整答案【历年真题】.docx
文档评论(0)