C++028(变量的作用域)
变量的作用域
作用域就是程序中变量的作用范围。局部变量的作用域是局部的,如函数体内;全局变量的作用域则是整个程序。
- 我们前面接触过的变量基本都是局部变量,这些变量在函数体内声明,无法被其他函数所使用。
- 函数的形参也属于局部变量,作用范围仅限于函数内部的语句块。
- 除此之外,在各类语句块(如if语句、while语句、for语句等)中定义的变量也是局部变量,作用范围仅限于语句块内部。
- 全局变量在函数体外声明,因此不属于某个函数,而属于整个C++源文件,可在程序的任何位置访问它。
- 全局变量可增加函数间的数据联系。
- 例如,同一文件中的所有函数都能引用全局变量的值,因此如果在一个函数中改变了全局变量的值,就能影响到其他函数,相当于函数间有了一个数据通道。
说明
当内部作用域与外部作用域声明了同名变量时,内部作用域中的变量会屏蔽外部作用域中的变量。
本程序中,变量iTotalCount被定义两次,第一次定义出现在所有函数外,表示全局变量;第二次定义出现在main( )函数中,表示局部变量。
细心体会两者的作用域,以及局部变量对全局变量的屏蔽作用。代码如下:
#include<iostream>
using namespace std;
int iTotalCount; //定义全局变量
int GetCount(); //声明GetCount()函数
int main()
{int iTotalCount=100; //定义局部变量iTotalCount cout<<iTotalCount<<endl; //输出局部变量iTotalCount的值cout<<GetCount()<<endl; //输出调用GetCount()函数后的返回值 } int GetCount() //定义函数 GetCount(){iTotalCount=200; //给全局变量赋值return iTotalCount;}
输出结果100200
程序运行结果如上所示。
- main( )函数中第一次输出的是局部变量iTotalCount的值100。
- 第二次输出的是调用GetCount( )函数后的返回值200。
- 每个变量都有一定的生命周期。
- 局部变量在函数调用时创建,在栈中分配内存,函数调用结束后销毁并释放。
- 全局变量在程序开始时创建并分配空间,在程序结束时释放内存并销毁。