Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)qq
published in(发表于) 2014/7/9 22:36:11
C++变量的作用域

C/C++变量的作用域

程序描述:该程序的功能是根据变量定义位置的不同,调用不同作用域中的变量。

【源程序1-16】

01 #include

02 using namespace std;

03 int temp=5;

04

05 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:10

Lining temp:0

知识点:

C++的标识符(即变量)作用域有3 种:全局、局部和文件。所谓作用域就是标识符在程序中的可见性,或者说在程序中的哪个地方可以使用,可以让它发挥作用。

(1) 全局作用域。当变量是在所有函数的外部声明的,称其为外部变量,它具有全局作用域(即可以在程序的任何地方访问它)。全局作用域的变量/函数可以在独立编译的代码模块中使用,前提是要在使用它的模块中用extern 关键字对其进行声明。

(2) 局部作用域:在函数内部或者在某一模块内声明,不能被其他函数模块访问的变量,以及函数的形参都具有局部作用域。C++支持在不同作用域中使用同名标识符,但是在同一函数内,如果使用同名标识符,具有内层作用域的标识符会覆盖外层作用域的标识符。当一个局部变量和一个全局变量同名时,所有对变量名的引用都会指向局部变量,此时,如果使用全局变量,就要用作用域消解符“::”来限定变量(即通知编译器)。

(3) 文件作用域。标识符只在声明它的文件内可见,外部不可见,即不能使用extern 在其他文件中声明它们。




If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759