C/C++中变量的生存期

C/C++中变量的生存期
Last Edit 2013/11/22

  1.静态生存期

       若某个对象它的生存期与程序的运行期相同,我们就说它具有静态生存期,就是说在程序运行期间它都不会释放。

     具有文件作用域的对象都具有静态生存期。

    函数内部具有块作用域的对象怎样才能具有静态生存期呢?我们可以使用关键字static修饰对象。比如,static int x;这个语句就是将x声明为具有静态生存期的变量,也成为静态变量。

   2.动态生存期

除了上述情况的对象具有静态生存期外,其余对象都具有动态生存期。具有动态生存期的对象产生于声明处,于该对象的作用域结束处释放。举个例子说明下简单变量和类的对象的生存期,其中涉及到了全局变量和局部变量,这两个概念下一讲会讲到。现在大家可以先这样简单的理解,全局变量就是具有文件作用域的变量,局部变量就是具有块作用域的变量。

         #include 
         using namespace std;
         int a=1;           // a为全局变量,它具有静态生存期。
         void fun(void);
         int main()   
         { 
                     static int x;    // 局部变量,具有静态生存期,可以叫做静态局部变量,局部可见。
                     int y=5;         // y,z为局部变量,具有动态生存期。
                     int z=1;
  
                    cout<<"---MAIN---\n";
                    cout<<" a: "<
     这里要说明下,静态局部变量如果没有进行显式初始化,那么它将被默认初始化为0。 当第二次进入fun函数时,其静态局部变量x和y将不再初始化,x和y将继续使用fun函数第一次被调用后最后的值来参加下面的运算。具体点说,第一次调用完fun函数后,fun中变量x的值是7,在第二次调用fun函数时,x不会被赋值为4,而是继续使用7作为自己的值。


你可能感兴趣的:(C/C++)