cpp 全局变量可见性
时间: 2023-02-07 16:08:55 浏览: 63
全局变量在 C++ 中是可以在整个程序中都可以被访问到的,因此它的可见性是全局的。通常来说,全局变量是在程序的任意位置都可以被访问到的,只需要使用它的名字来引用它即可。
但是,在 C++ 中还有一种变量称为局部变量,它们的可见性仅限于它们所在的函数或代码块内。局部变量只能在定义它的函数或代码块内被访问,不能被其他函数或代码块访问。
相关问题
全局变量多个cpp可见
在C++中,可以通过在头文件中声明全局变量来使其在多个cpp文件中可见。例如,假设我们有一个名为global.h的头文件,其中声明了一个全局变量:
```c++
// global.h
extern int globalVar;
```
然后在另一个cpp文件中,我们可以使用以下代码来访问和修改该全局变量:
```c++
// file1.cpp
#include "global.h"
void someFunction()
{
globalVar = 10;
}
```
在另一个cpp文件中,我们可以使用相同的头文件,并访问和修改同一个全局变量:
```c++
// file2.cpp
#include "global.h"
void anotherFunction()
{
globalVar = 20;
}
```
在编译时,将所有cpp文件编译成目标文件并链接在一起,这样全局变量就可以在整个程序中访问和修改了。需要注意的是,全局变量的使用应该谨慎,因为它们可能会导致代码难以维护和调试。
cpp函数内部定义全局变量
在C++中,可以在函数内部定义全局变量,这样的全局变量只能在函数内部访问,而在函数外部是不可见的。以下是一个示例代码:
```cpp
#include <iostream>
void foo() {
static int count = 0; // 函数内部定义的全局变量
count++;
std::cout << "foo has been called " << count << " times." << std::endl;
}
int main() {
for (int i = 0; i < 5; i++) {
foo();
}
return 0;
}
```
这个程序会输出:
```
foo has been called 1 times.
foo has been called 2 times.
foo has been called 3 times.
foo has been called 4 times.
foo has been called 5 times.
```
在这个例子中,我们在函数`foo`内部定义了一个静态变量`count`,用于记录函数`foo`被调用的次数。由于`count`是静态变量,所以它只会被初始化一次,而不是每次调用函数时都会重新初始化。由于`count`是在函数内部定义的,所以它只能在函数内部访问,而在函数外部是不可见的。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)