- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5.4 变量的作用域和生存期 2.全局变量 全局变量也称为外部变量,是在函数外部定义的变量。它不属于哪一个函数,而是属于一个源程序文件。其作用域是从变量定义点开始到该源程序文件结束。在函数中使用全局变量,一般应作全局变量说明。只有在函数内经过说明的全局变量才能使用,全局变量的说明符为extern。但在一个函数之前定义的全局变量,在该函数内使用可不再加以说明。例如: int a,b; /*外部变量*/ void f1( ) /*函数f1*/ { …… } float x,y; /*外部变量 */ int f2( ) /*函数f2*/ { …… } void main( ) /*主函数*/ { …… } 5.4 变量的作用域和生存期 5.4.2 变量的生存期 各种变量的作用域不同,就其本质来说是因变量的存储类型不同。所谓存储类型是指变量占用内存空间的方式,也称为存储方式或生存期。 变量的存储方式可分为“静态存储”和“动态存储”。静态存储变量通常是在变量定义时就分配存储单元并一直保持不变,直至整个程序结束,全局变量即属于此类存储方式。动态存储变量是在程序执行过程中,使用它时才临时分配存储单元,使用完毕立即释放。典型的例子是函数的形式参数,在函数定义时并不给形参分配存储单元,只是在函数被调用时,才予以分配,调用函数完毕立即释放。如果一个函数被多次调用,则反复地分配、释放形参变量的存储单元。 从以上分析可知,静态存储变量是一直存在的,而动态存储变量则时而存在时而消失。我们则把这种由于变量存储方式不同而产生的特性称变量的生存期。生存期表示了变量存在的时间。生存期和作用域是从时间和空间这两个不同的角度来描述变量的特性,这两者既有联系,又有区别。一个变量究竟属于哪一种存储方式,并不能仅从其作用域来判断,还应有明确的存储类型说明。在C语言中,对变量的存储类型说明有以下四种: 5.4 变量的作用域和生存期 auto /*自动变量*/ static /*静态变量*/ register /*寄存器变量*/ extern ? /*外部变量*/ 自动变量和寄存器变量属于动态存储方式,外部变量和静态变量属于静态存储方式。在介绍了变量的存储类型之后,可以知道对一个变量的说明不仅应说明其数据类型,还应说明其存储类型。因此变量说明的完整形式应如下: 存储类型符 数据类型符 变量名,变量名…; 例如: static int a,b; /*说明a,b为静态整型变量*/ auto char c1,c2; /*说明c1,c2为自动字符变量*/ static int a[5]={1,2,3,4,5}; /*说明a为静态整型数组*/ extern int x,y; /*说明x,y为外部整型变量*/ 5.4 变量的作用域和生存期 1.自动变量(auto) 自动变量是C语言程序中使用最广泛的一种类型。C语言规定,函数内凡未加存储类型说明的变量均视为自动变量,也就是说自动变量可省去说明符auto。在前面各章的程序中所定义的变量凡未加存储类型符的都是自动变量。例如: { int i,j,k; ? char c; ? …… } 等价于: { auto int i,j,k; auto char c; …… } 5.4 变量的作用域和生存期 2.静态变量(static) 静态变量的类型说明符是static。静态变量当然属于静态存储方式,但是属于静态存储方式的变量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由static加以定义后才能成为静态外部变量,或称静态全局变量。对于自动变量,前面已经介绍它属于动态存储方式。但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式。 由此看来,一个变量可由static进行再说明,并改变其原有的存储方式。 1)静态局部变量 在局部变量的说明前再加上static说明符就构成静态局部变量。 例如: static int a,b; static float array[5]={1,2,3,4,5}; 静态局部变量属于静态存储方式,它具有以下特点: (1)静态局部变量在函数内定义,但不像自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程
您可能关注的文档
- C#桌面系统开发案例教程 李建青 第十章新.ppt
- C#桌面系统开发案例教程 李建青 第四章新.ppt
- C++ Builder 6程序设计教程 陆卫忠 刘文亮 等 第一章概述新.ppt
- C++程序设计 张桦 第1章 开始学习C++新.ppt
- C++程序设计 张桦 第2章 数据类型与表达式新.ppt
- C++程序设计 张桦 第4章 程序流程控制新.ppt
- C++程序设计 张桦 第5章 函数新.ppt
- C++程序设计 张桦 第6章 类和对象新.ppt
- C++程序设计 张桦 第7章 面向对象程序设计新.ppt
- C++程序设计 张桦 第8章 RTTI与异常处理新.ppt
- C语言程序设计 何丽 余平 C语言程序设计第6章新.ppt
- C语言程序设计 何丽 余平 C语言程序设计第7章新.ppt
- C语言程序设计 何丽 余平 C语言程序设计第8章新.ppt
- C语言程序设计 何丽 余平 C语言程序设计附录新.ppt
- C语言程序设计 何丽 余平 C语言程序设计文前第1章新.ppt
- C语言程序设计 任文 孔庆彦 (第1章--第6章) 第1章新.ppt
- C语言程序设计 任文 孔庆彦 (第1章--第6章) 第2章新.ppt
- C语言程序设计 任文 孔庆彦 (第1章--第6章) 第3章新.ppt
- C语言程序设计 任文 孔庆彦 (第1章--第6章) 第5章新.ppt
- C语言程序设计 任文 孔庆彦 (第1章--第6章) 第6章新.ppt
文档评论(0)