全局变量和局部变量

全局变量和局部变量

ID:15428486

大小:164.50 KB

页数:5页

时间:2018-08-03

全局变量和局部变量_第1页
全局变量和局部变量_第2页
全局变量和局部变量_第3页
全局变量和局部变量_第4页
全局变量和局部变量_第5页
资源描述:

《全局变量和局部变量》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、C语言的变量一、全局变量和局部变量按照变量的有效作用范围可划分为局部变量和全局变量。局部变量是在一个函数内部定义的变量,该变量只在定义它的那个函数范围以内有效,在此函数之外局部变量就失去意义了,因而也不能使用这些变量了。不同的函数可以使用相同的局部变量名,由于他们的作用范围不同,不会相互干扰。函数的形式参数也属于局部变量。在一个函数内部的复合语句中也可以定义局部变量,该局部变量只在该复合语句中有效。全局变量是在函数外部定义的变量,又称外部变量。全局变量可以为多个函数共同使用,其有效的作用范围是从它定义的位置开始到整个程序文件结束为止。如果全局变量定义在一个程序文件的

2、开始处,则在整个程序文件范围内都可以使用它。如果一个全局变量不是在程序文件的开始处定义的,但又希望在它的定义点之前的函数中引用该变量,这时应该在引用该变量的函数中用关键字extern将其说明为“外部变量”。另外,如果在一个程序模块文件中引用另一个程序模块文件中定义的变量时,也必须用extern进行说明。外部变量说明与外部变量定义是不同的。外部变量定义只能有一次,定义的位置在所有函数之外,而同一个程序文件中的外部变量说明可以有多次,说明的位置在需要引用该变量的函数之内。外部变量说明的作用只是声明该变量是一个已经在外部定义过了的变量而已。如果在同一个程序文件中,全局变量

3、与局部变量同名,则在局部变量的有效作用范围之内,全局变量是不起作用的,也就是说,局部变量的优先级比全局变量的高。在编写C语言程序时,不是特别需要的地方就不要使用全局变量,二应当尽可能的使用局部变量。这是因为局部变量只有在使用它时,才为其分配内存单元,二全局变量在整个程序的执行过程中都要占用内存单元。另外,如果使用全局变量过多,在各个函数执行时都有可能改变全局变量的值,使人们难以清楚的判断出在各个程序执行点处全局变量的值,这样会降低程序的通用性和可读性。还有一点需要说明,如果程序中的全局变量在定义时赋给了初值,按ANSIC标准规定,在程序进入主函数之前必须先对该全局变

4、量进行初始化。这是由连接定位器BL51对目标程序连接定位时,在最后生成的目标代码中自动加入一段运行库“INIT.OBJ”来实现的。由于增加了这一段代码,程序的长度会增加,运行速度也会受到影响。因此要限制使用全局变量。二、变量的存储种类在C语言中变量有四种存储种类,即自动变量(auto)、外部变量(extern)、静态变量(static)和寄存器变量(register)。1.自动变量(auto)定义一个变量时,在变量名前面加上存储种类说明符“auto”,即将该变量定义为自动变量。自动变量是C语言中使用最为广泛的一类变量。按照默认规则,在函数体内部活符合语句内部定义的变

5、量,如果省略存储种类说明,该变量即为自动变量。习惯上通常采用默认形式。自动变量的默认范围在定义它的函数体或符合语句内部,只有在定义它的函数被调用,或是定义它的复合语句被执行时,编译器才为其分配内存空间,开始其生存期。当函数调用结束返回,或复合语句执行结束时,自动变量所占用的内存空间就被释放,变量的值当然就不复存在,其生存期结束。当函数被再次调用或符合语句被再次执行时,编译器又会为它们内部的自动变量重新分配内存空间,但它不会保留上次运行时的值,而必须被重新赋值。因此自动变量始终是相对于函数或符合语句的局部变量。1.外部变量(extern)按照默认规则,凡是在所有函数之

6、前,在函数外部定义的变量都是外部变量,定义时可以不写extern说明符。但是,在一个函数体内说明一个已在该函数体外或别的程序模块文件中定义过的外部变量时,则必须使用extern说明符。一个外部变量被定义后,它就被分配了固定的内存空间。外部变量的生存期为程序的整个执行时间,即在程序执行期间外部变量可以被随意使用,当一条复合语句执行完毕或是某一函数返回时,外部变量的存储空间并不被释放,其值也仍然保留。一次外部变量属于全局变量。C语言允许将大型程序分解为若干个独立的程序模块文件,各个模块可分别进行编译,然后再将它们连接在一起。在这种情况下,如果某个变量需要在所有程序模块文

7、件中使用,只要在一个程序模块文件中将该变量定义成全局变量,而在其他程序模块文件中用extern说明该变量是已经被定义过的外部变量就可以了。1.静态变量(static)静态变量又有内部静态变量和外部静态变量之说。如果一个变量的定义是在程序中某个函数的内部,则称为内部静态变量或局部静态变量。局部静态变量不像自动变量那样只有当函数调用它时才存在,退出函数时它就消失,局部静态变量始终都是存在的,但只能在定义它的函数内部进行访问,退出函数时,变量的值仍然保持但是不能进行访问。还有一个是全局静态变量,它是在函数外部被定义的,作用范围从它的定义点开始,一直到程序结束。当一个C

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。