C++程序设计必知:生存期

参考引用自:

鸡啄米:C++编程入门系列之十九(C++程序设计必知:生存期)

1、静态生存期

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

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

b、使用关键字static修饰的变量,也就是静态变量具有静态生存期

2、动态生存期

具有动态生存期的对象产生于声明处,于该对象的作用域结束处释放。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#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:"  << a <<  " x:"  << x <<  " y:"  << y <<  " z:"  << z << endl;
     z = z + 2;
     fun();
     cout <<  "---MAIN---\n" ;
     cout <<  "a:"  << a <<  " x:"  << x <<  " y:"  << y <<  " z:"  << z << endl;
     a = a + 10;
     fun();
     return  0;
}
void  fun( void ){
     static  int  x = 4;    // x,y为静态局部变量,具有全局寿命,局部可见。只有第一次进入函数时被初始化
     static  int  y;
     int  z = 10;        // z为局部变量,具有动态生存期,每次进入函数时都初始化。
     a = a + 20;
     x = x + 3;
     z = z + 4;
     cout <<  "---FUN---\n" ;
     cout <<  "a:"  << a <<  " x:"  << x <<  " y:"  << y <<  " z:"  << z << endl;
     y = x;
}
/*
--MAIN---
a:1 x:0 y:5 z:1
---FUN---
a:21 x:7 y:0 z:14
---MAIN---
a:21 x:0 y:5 z:3
---FUN---
a:51 x:10 y:7 z:14
*/



你可能感兴趣的:(c++)