C++中的靜態全局變量和普通全局變量的主要區別在于它們的可見性和生命周期。
可見性:
生命周期:
下面是一個簡單的例子來說明這兩者的區別:
// 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 源文件中可見。當我們嘗試在其他源文件中訪問這些變量時,編譯器會報錯。