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<iostream>
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
*/



發佈了25 篇原創文章 · 獲贊 9 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章