第1个回答 2011-09-09
静态局部变量只能在定义该变量的函数内使用,全局变量可以在任意函数内使用。
第2个回答 2011-09-09
首先要清楚“整个程序”这个概念。
一个程序由多个编译单位组成。每个可进行单独编译的源文件称为“编译单位”。
在同一编译单位内用EXTERN说明符来扩展全局变量的作用域。
当用STATIC说明符说明全局变量时,此变量可称作“静态”全局变量。静态全局变量只限于本编译单位使用,不能被其它编译单位所引用。
第3个回答 2018-02-23
单就你这个问题,回答就一句话,作用域不一样。
简单例子:
静态局部变量:只有定义这个变量的当前cpp能找到他的定义,其他cpp哪怕extern这个变量,包含对头文件,要用,编译都会报错找不到。(至于生命周期,好比a.cpp里main函数,b.cpp里定义一个B类,类里面一个函数里static int i(默认为0),并打印,赋另外一个值2,再打印,a.cpp里调用B类里这个函数两次,第一次打印0,2;第二次打印2,2,就是说明这个变量在程序没关的时候,哪怕出了b.cpp,static int i的静态局部变量的值还在(但是你就是没法直接在a.cpp里extern来用这个i,要想这么干,请用全局变量))
ps:静态局部变量和静态全局变量也差不多这意思,作用域,前者定义他的大括号里可用,后者定义它的cpp文件里随便用。静态就是指作用域只在定义它的范围(局部or全局)
全局变量:同一个程序,其他cpp里面只要extern这个变量,就能找到这个变量,且只要加好锁,这个程序没关掉,这个变量的数值就有确实含义(没被delete)
第4个回答 推荐于2018-02-24
(1)静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。
(2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。
(3)对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。
根据静态局部变量的特点, 可以看出它是一种生存期为整个源文件的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。 因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用(尤其是短名全局变量的变量名污染很严重),因此仍以采用局部静态变量为宜。
简单的说静态局部变量与全局变量最明显的区别就在于:全局变量在其定义后所有函数都能用,但是静态局部变量只能在一个函数里面用。本回答被提问者和网友采纳