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 |
正确初始化变量是一个良好的编程实践,否则有时程序会产生意想不到的结果。
