溫馨提示×

c++靜態全局變量與普通全局變量的區別

c++
小樊
118
2024-12-06 21:11:18
欄目: 編程語言

C++中的靜態全局變量和普通全局變量的主要區別在于它們的可見性和生命周期。

  1. 可見性:

    • 普通全局變量:在整個程序范圍內都是可見的,可以在任何源文件中被訪問和修改。
    • 靜態全局變量:在定義它的源文件中可見,但在其他源文件中不可見。它們的作用域僅限于定義它們的源文件。
  2. 生命周期:

    • 普通全局變量:在程序啟動時創建,程序結束時銷毀。
    • 靜態全局變量:在程序啟動時創建,但只有在第一次進入定義它的源文件時才會被初始化。程序結束時銷毀。

下面是一個簡單的例子來說明這兩者的區別:

// file1.cpp
#include <iostream>

// 普通全局變量
int globalVar = 10;

// 靜態全局變量
static int staticGlobalVar = 20;

void printGlobalVar() {
    std::cout << "Global variable: " << globalVar << std::endl;
}

void printStaticGlobalVar() {
    std::cout << "Static global variable: " << staticGlobalVar << std::endl;
}

int main() {
    printGlobalVar(); // 輸出:Global variable: 10
    printStaticGlobalVar(); // 輸出:Static global variable: 20
    return 0;
}

在這個例子中,globalVar 是一個普通全局變量,它在整個程序范圍內都是可見的。而 staticGlobalVar 是一個靜態全局變量,它只在 file1.cpp 源文件中可見。當我們嘗試在其他源文件中訪問這些變量時,編譯器會報錯。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女