Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)qqpublished in(发表于) 2014/7/9 22:36:11 C++变量的作用域
程序描述:该程序的功能是根据变量定义位置的不同,调用不同作用域中的变量。【源程序1-16】 01 #include 02 using namespace std;03 int temp=5;0405 int main()06 {07 int temp=6;08 cout<<"Local temp:"<09 cout<<"Overall temp:"<<::temp<10 if(temp>0)11 {12 temp=10;13 cout<<"Outer temp:"<14 if(temp==10)15 {16 temp=0;17 cout<<"Lining temp:"<18 }19 }20 return 0;21 }程序说明:(1) 第3 行和第7 行分别定义了同名的变量temp。第3 行的temp 定义在函数体的外部,属于全局变量;第7 行的temp 定义在main 函数内,其有效范围限定在main 内。(2) 如果局部变量和全局变量同名,在函数体内,以局部变量为主,因此,第8 行的输出结果为Local temp:6。第9 行temp 的前面附加了作用域消解符“::”,因此,该处调用全局变量temp,输出结果为Overall temp:5。(3) 同理,第10~17 行的temp 均针对局部变量进行操作。因此,第13 行第17 行两行的输出结果分别为Outer temp:10Lining temp:0知识点:C++的标识符(即变量)作用域有3 种:全局、局部和文件。所谓作用域就是标识符在程序中的可见性,或者说在程序中的哪个地方可以使用,可以让它发挥作用。(1) 全局作用域。当变量是在所有函数的外部声明的,称其为外部变量,它具有全局作用域(即可以在程序的任何地方访问它)。全局作用域的变量/函数可以在独立编译的代码模块中使用,前提是要在使用它的模块中用extern 关键字对其进行声明。(2) 局部作用域:在函数内部或者在某一模块内声明,不能被其他函数模块访问的变量,以及函数的形参都具有局部作用域。C++支持在不同作用域中使用同名标识符,但是在同一函数内,如果使用同名标识符,具有内层作用域的标识符会覆盖外层作用域的标识符。当一个局部变量和一个全局变量同名时,所有对变量名的引用都会指向局部变量,此时,如果使用全局变量,就要用作用域消解符“::”来限定变量(即通知编译器)。(3) 文件作用域。标识符只在声明它的文件内可见,外部不可见,即不能使用extern 在其他文件中声明它们。
赞