美文网首页
static 静态变量生命周期

static 静态变量生命周期

作者: 体胖勤跑步 | 来源:发表于2016-04-12 20:50 被阅读0次

静态变量的类型说明符是static。静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。对于自动变量,它属于动态存储方式。但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式。由此看来,一个变量可由static进行再说明,并改变其原有的存储方式。

1. 静态局部变量

在局部变量的说明前再加上static说明符就构成静态局部变量。例如:

static int a,b; static float array[5]={1,2,3,4,5};

静态局部变量属于静态存储方式,它具有以下特点:

(1)静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。

(2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后,尽管该变量还继续存在,但不能使用它。

(3)允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋以0值。

(4)对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。根据静态局部变量的特点,可以看出它是一种生存期为整个源程序的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值。因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。

2.静态全局变量

全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。因此static 这个说明符在不同的地方所起的作用是不同的。应予以注意。

援引自http://blog.csdn.net/lanchengxiaoxiao/article/details/7880276

相关文章

  • static关键字和final关键字

    static 在类中,用static声明的成员变量为静态成员变量,也称为类变量。 类变量的生命周期和类相同,在整个...

  • 关键字 static

    1.修饰局部变量static 修饰局部变量时, 这个变量成为静态变量, 存储在静态区, 生命周期和程序相同, 这个...

  • 2019-07-20

    变量: 1、局部变量(local) 2、成员变量,从属于对象,生命周期伴随对象始终。 3、静态变量 static,...

  • java随笔

    static变量和static方法 static变量 1.static修饰的变量:静态变量,静态变量在内存中只有一...

  • Macros & Variable & Const

    1)static static 修饰的变量只会初始化一次,会存储在静态全局区,且生命周期为程序和程序的生命周期相同...

  • java 基础总结

    基本数据类型: 变量的生命周期 1.静态变量和实例变量的生命周期: 类的成员变量有两种:一种是被 static 关...

  • Java中的静态内部类

    一:静态内部类 使用static修饰的变量是静态变量,使用static 修饰的方法是静态方法,静态变量和静态方法都...

  • static有什么用途

    在C语言中,static主要定义全局静态变量,定义局部静态变量,定义静态函数。 static 属于静态变量,使用它...

  • JAVA——static修饰符解惑及使用

    1. static的作用 static可以修饰变量,被static修饰的变量叫做静态变量,程序运行时静态变量存放在...

  • static的作用

    在C语言中,static主要定义全局静态变量,定义局部静态变量,定义静态函数。static属于静态变量,使用它修饰...

网友评论

      本文标题:static 静态变量生命周期

      本文链接:https://www.haomeiwen.com/subject/orjwlttx.html