2.3 变量的作用域
在C++(www.cppentry.com)中,声明的变量主要分为全局变量和局部变量,可以出现在程序的任何位置,在不同的位置声明,其作用域也不同。
全局变量:其说明语句不在任何一个类定义、函数定义或复合语句(程序块)中的变量。全局变量所占用的空间在内存的数据区,在程序运行的整个过程中位置保持不变。
局部变量:其说明语句在某一个类定义、函数定义或复合语句(程序块)中的变量。局部变量所占用的空间在为程序运行时所设置的临时工作区中,以堆栈的形式允许反复占用和释放。
例如,下面程序定义了多个同名变量,编译程序将根据变量的所在位置进行区分其是全局变量还是局部变量,读者可仔细观察其值的变化。
- #include <iostream>
- using namespace std;
- int main()
- {
- int a=0;
- int b=0; //定义全局变量a、b,并赋初值0
- aa=a+1;
- bb=b+1; //将a加1后赋给a,将b加1后赋给b
- cout<<"全局变量:"<<"a="<<a<<","<<"b="<<b<<endl; //输出a、b的值
- {
- float a=0.5; //定义局部变量a
- a++;
- b++; //变量a,b递加
- cout<<"局部变量a:"<<"a="<<a<<","<<"全局变量b:"<<"b="<<b<<endl; //输出a、b的值
- }
- aa=a+1;
- bb=b+1; //将a加1后赋给a,将b加1后赋给b
- cout<<"全局变量:"<<"a="<<a<<","<<"b="<<b<<endl;
- system("pause");
- return 0;
- }
编译并运行程序,结果如图2.14所示。
|
| (点击查看大图)图2.14 变量作用域 |
在上述程序中,全局变量a的作用范围为5~9行和16~18行,全局变量b的作用范围为6~18行,而局部变量a的作用范围为11~15行。