全局变量及局部变量.doc

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

C语言的变量 一、全局变量和局部变量 按照变量的有效作用范围可划分为局部变量和全局变量。局部变量是在一个函数内部定义的变量,该变量只在定义它的那个函数范围以内有效,在此函数之外局部变量就失去意义了,因而也不能使用这些变量了。不同的函数可以使用相同的局部变量名,由于他们的作用范围不同,不会相互干扰。函数的形式参数也属于局部变量。在一个函数内部的复合语句中也可以定义局部变量,该局部变量只在该复合语句中有效。 全局变量是在函数外部定义的变量,又称外部变量。全局变量可以为多个函数共同使用,其有效的作用范围是从它定义的位置开始到整个程序文件结束为止。如果全局变量定义在一个程序文件的开始处,则在整个程序文件范围内都可以使用它。如果一个全局变量不是在程序文件的开始处定义的,但又希望在它的定义点之前的函数中引用该变量,这时应该在引用该变量的函数中用关键字extern将其说明为“外部变量”。另外,如果在一个程序模块文件中引用另一个程序模块文件中定义的变量时,也必须用extern进行说明。 外部变量说明与外部变量定义是不同的。外部变量定义只能有一次,定义的位置在所有函数之外,而同一个程序文件中的外部变量说明可以有多次,说明的位置在需要引用该变量的函数之内。外部变量说明的作用只是声明该变量是一个已经在外部定义过了的变量而已。 如果在同一个程序文件中,全局变量与局部变量同名,则在局部变量的有效作用范围之内,全局变量是不起作用的,也就是说,局部变量的优先级比全局变量的高。在编写C语言程序时,不是特别需要的地方就不要使用全局变量,二应当尽可能的使用局部变量。这是因为局部变量只有在使用它时,才为其分配内存单元,二全局变量在整个程序的执行过程中都要占用内存单元。另外,如果使用全局变量过多,在各个函数执行时都有可能改变全局变量的值,使人们难以清楚的判断出在各个程序执行点处全局变量的值,这样会降低程序的通用性和可读性。 还有一点需要说明,如果程序中的全局变量在定义时赋给了初值,按ANSI C标准规定,在程序进入主函数之前必须先对该全局变量进行初始化。这是由连接定位器BL51对目标程序连接定位时,在最后生成的目标代码中自动加入一段运行库“INIT.OBJ”来实现的。由于增加了这一段代码,程序的长度会增加,运行速度也会受到影响。因此要限制使用全局变量。 变量的存储种类 在C语言中变量有四种存储种类,即自动变量(auto)、外部变量(extern)、静态变量(static)和寄存器变量(register)。 自动变量(auto) 定义一个变量时,在变量名前面加上存储种类说明符“auto”,即将该变量定义为自动变量。自动变量是C语言中使用最为广泛的一类变量。按照默认规则,在函数体内部活符合语句内部定义的变量,如果省略存储种类说明,该变量即为自动变量。习惯上通常采用默认形式。 自动变量的默认范围在定义它的函数体或符合语句内部,只有在定义它的函数被调用,或是定义它的复合语句被执行时,编译器才为其分配内存空间,开始其生存期。当函数调用结束返回,或复合语句执行结束时,自动变量所占用的内存空间就被释放,变量的值当然就不复存在,其生存期结束。当函数被再次调用或符合语句被再次执行时,编译器又会为它们内部的自动变量重新分配内存空间,但它不会保留上次运行时的值,而必须被重新赋值。因此自动变量始终是相对于函数或符合语句的局部变量。 外部变量(extern) 按照默认规则,凡是在所有函数之前,在函数外部定义的变量都是外部变量,定义时可以不写extern说明符。但是,在一个函数体内说明一个已在该函数体外或别的程序模块文件中定义过的外部变量时,则必须使用extern说明符。一个外部变量被定义后,它就被分配了固定的内存空间。外部变量的生存期为程序的整个执行时间,即在程序执行期间外部变量可以被随意使用,当一条复合语句执行完毕或是某一函数返回时,外部变量的存储空间并不被释放,其值也仍然保留。一次外部变量属于全局变量。 C语言允许将大型程序分解为若干个独立的程序模块文件,各个模块可分别进行编译,然后再将它们连接在一起。在这种情况下,如果某个变量需要在所有程序模块文件中使用,只要在一个程序模块文件中将该变量定义成全局变量,而在其他程序模块文件中用extern说明该变量是已经被定义过的外部变量就可以了。 静态变量(static) 静态变量又有内部静态变量和外部静态变量之说。如果一个变量的定义是在程序中某个函数的内部,则称为内部静态变量或局部静态变量。局部静态变量不像自动变量那样只有当函数调用它时才存在,退出函数时它就消失,局部静态变量始终都是存在的,但只能在定义它的函数内部进行访问,退出函数时,变量的值仍然保持但是不能进行访问。还有一个是全局静态变量,它是在函数外部被定义的,作用范围从它的定义点开始,

文档评论(0)

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

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

1亿VIP精品文档

相关文档