C++ 变量作用域
作用域是程序的一个区域,广义上有三个地方可以声明变量:
- 在函数或块中声明的变量称为局部变量。
-
在函数参数的定义中声明的变量称为形参。
-
在所有函数的外部声明的变量称为全局变量。
我们将在后续章节中学习什么是函数以及它的参数。现在,让我们解释一下局部变量和全局变量。
局部变量
在函数或块中声明的变量称为局部变量。它们只能被在该函数或代码块中的语句使用。局部变量对于其它函数来说是不可知的。以下是使用局部变量的示例:
#include <iostream>
using namespace std;
int main () {
// Local variable declaration:
int a, b;
int c;
// actual initialization
a = 10;
b = 20;
c = a + b;
cout << c;
return 0;
}
全局变量
全局变量是在所有函数之外定义的,通常位于程序的顶部。全局变量在程序的整个生命周期内保持其值。
任何函数都可以访问全局变量。也就是说,在声明后,在整个程序中都可以使用全局变量。以下是使用全局变量和局部变量的示例:
#include <iostream>
using namespace std;
// Global variable declaration:
int g;
int main () {
// Local variable declaration:
int a, b;
// actual initialization
a = 10;
b = 20;
g = a + b;
cout << g;
return 0;
}
一个程序可以在局部变量和全局变量中使用相同的名称,但是函数内的局部变量的值会优先。例如,-
#include <iostream>
using namespace std;
// Global variable declaration:
int g = 20;
int main () {
// Local variable declaration:
int g = 10;
cout << g;
return 0;
}
当上述代码被编译并执行时,它会产生以下结果 −
10
初始化本地和全局变量
当定义一个本地变量时,系统不会自动初始化它,你必须自己初始化它。定义全局变量时,系统会在你定义它时自动进行初始化,方法如下:
Data Type | Initializer |
---|---|
int | 0 |
char | ‘\0’ |
float | 0 |
double | 0 |
pointer | NULL |
正确初始化变量是一个良好的编程实践,否则有时程序会产生意想不到的结果。