C++中static全局变量的作用域
时间: 2023-11-08 19:06:10 浏览: 98
static全局变量与普通的全局变量的区别详细解析
在C++中,static关键字可以用于全局变量、函数和类成员变量。当static关键字用于全局变量时,它的作用是将该变量的作用域限制在定义它的源文件中,使得该变量对于其他源文件是不可见的。这种变量称为静态全局变量或者文件作用域变量。静态全局变量在程序运行期间只会被初始化一次,且其生命周期与程序的整个运行期间一致。
静态全局变量的作用域只限于定义它的源文件中,因此其他源文件无法访问它。如果在另一个源文件中定义了同名的全局变量,那么它们实际上是不同的变量,而不是同一个变量。
以下是一个示例:
```
// file1.cpp
#include <iostream>
static int global_var = 10;
void foo() {
std::cout << "global_var in file1: " << global_var << std::endl;
}
```
```
// file2.cpp
#include <iostream>
static int global_var = 20;
void bar() {
std::cout << "global_var in file2: " << global_var << std::endl;
}
```
```
// main.cpp
void foo();
void bar();
int main() {
foo(); // output: global_var in file1: 10
bar(); // output: global_var in file2: 20
return 0;
}
```
在这个示例中,file1.cpp和file2.cpp都定义了一个名为global_var的静态全局变量,它们的值分别为10和20。在main.cpp中,我们分别调用了foo()和bar()函数,这两个函数分别输出它们所在文件中的global_var的值。可以看到,这两个变量并不相同,它们的作用域仅限于各自的源文件中。
阅读全文