- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第10章 变量的生存范围 在实际的编程中变量的主要作用是存取数据,但是每一个个变量都有各自的生存范围,变量的生存范围是指一个变量从声明到结束的过程。因此,变量根据它的生存范围有可以分为局部变量和全局变量。变量根据存储类型的不同又可以分为动态存储变量、静态存储变量和寄存器型存储变量,下面将具体来阐述变量的生存范围。 10.1 局部作用域 当在函数体内或复合语句内部定义一个变量时,它的作用域就为局部作用域,这个变量在函数体外或复合语句外是不允许使用的。程序执行到函数体或复合语句之外这个变量就会自动释放。例如: int main() { int i,j; … } int max(int a,int b) { int temp; } char mychar() { char c; } 10.2 全局作用域 全局作用域是指变量、常量等对象的作用范围为整个程序。在全局作用域内定义的变量被称之为全局变量。全局变量的生命期开始于程序的运行,结束于程序的退出。 下面着重介绍作全局变量的作用域,全局变量的定义与局部变量的定义相同,只是在函数外部进行定义。例如: int a;//定义一个全局变量a 定义一个全局变量如果在定义时没有对它进行初始化那么它的初始值为0,反之它保存的是赋予它的变量值。这一点和局部变量不一样,局部变量如果在定义时没有初始化,局部变量中的值是随机的不可预见的。 10.3 变量的存储类型 根据变量的存储类型又可以将变量分为动态存储类型和静态存储类型。动态存储类型是指运行时根据需要进行分配内存的方式。静态存储类型是指在运行过程中系统给静态变量分配一个固定的存储空间。 10.3.1 自动存储类型 C++程序中,函数的形参、函数体中定义的变量如果在定义时没有特别的说明都属于自动变量,都是动态的分配空间然后到函数调用结束时自动释放空间,自动存储类型的变量是以auto关键字开始的。基本定义格式为: auto变量类型变量名表 例如: auto int a; //定义一个整型的自动变量 auto char b; //定义一个字符型的自动变量 上面的定义语句分别定义了一个整型的和字符型的自动变量。实际上,定义自动存储类型的变量时auto可以省略定义变量时如果前面没有加入其他关键字默认都是自动存储类型的。 10.3.2 静态存储变量 静态类型的存储变量的值在调用结束后并不释放空间而是一直保留原值,下次再调用时静态类型中存储的变量的值是上一次调用结束后的已有的保存的值。静态存储变量声明使用static关键字,基本定义格式为: static变量类型变量名表 10.3.3 寄存器存储类型 一般情况下程序中定义的变量是存储在内存中的,但是如果有一些变量被频繁的使用,为了减少重复的存取变量时所浪费的时间,提高执行效率C++还提供了另外一种变量类型——寄存器存储类型。这类变量声明后被保存在寄存器中,需要时直接从寄存器中去获取数据,这种方式的存取速度远远高于CPU到内存中去存取,提高了程序的执行效率。声明一个寄存器变量使用的关键字为register。基本定义格式为: register 变量类型 变量名 10.3.3 寄存器存储类型 10.4 定义和使用命名空间 在开发程序的过程中要时刻对程序代码进行组织管理,随着代码规模的扩大不可避免的要产生许多问题,例如:函数命名时函数名重复、标识符定义等。这些问题如果发现的早会得到及时的解决,但是在编码后期,代码规模很是庞大,解决起来就会相对麻烦,为了有效地避免这类问题,提高程序的可读性和程序的管理效率C++引入了命名机制。 命名空间是表示标识符的上下文。一个标识符可在多个命名空间中定义,它在不同命名空间中的含义是互不相干的。这样,在一个新的命名空间中可定义任何标识符,它们不会与任何已有的标识符发生冲突,因为已有的定义都处于其它命名空间中。 10.5 本章小结 C++中的变量的作用域描述了变量在程序中的作用范围,一旦变量的引用超过了其自身的作用域,编译时编译器就会编译错误。C++中使用命名空间可以更好的丢程序进行设计,可以预防因为代码规模较大而引起的对象名称重复的问题。使用命名空间可以使程序具有层级性,方便使用和管理。通过本章的学习,应能掌握各种变量的存储类型和生存范围。能够运用命名空间对程序进行很好的设计和管理。
文档评论(0)