1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C/C++全局变量和局部变量作用域问题

C/C++全局变量和局部变量作用域问题

时间:2019-09-24 11:39:13

相关推荐

C/C++全局变量和局部变量作用域问题

C++中局部变量可以和全局变量重名吗? 这是一个作用域的问题。一个声明将一个名字引进一个作用域;局部变量(通常在函数中定义)的作用域是从声明的那一点开始,直到这个声明所在的块结束为止(一个块就是由{}围起来的一段代码)。全局变量(在所有函数、类、命名空间之外定义)的作用域从声明的那一点开始,直到这个声明所在的文件的结束。与全局变量重名的局部变量可以屏蔽全局变量,如果想在块内使用全局变量需要通过作用域解析运算符::引用。 见下例:

//global_local.cpp

#include <iostream>

using namespace std;

int x ; //定义一个全局变量x

int main()

{

int x ; //屏蔽全局变量x

cout<< "Global x Initial value = "<< ::x<< endl;

cout<< "Local x Initial value = "<< x<< endl;

x = 5;//对局部变量x赋值

::x = 6; //通过作用域解析运算符::引用全局变量x,并且改变其值

cout<< " After assignment Global x = " << ::x<< endl;

cout<< "After assignment Local x = " << x <<endl;

return 0;

}

上述例子输出结果为:

Global x Initial value = 0

Local x Initial value = 11239412

After assignment Global x = 6

After assignment Local x = 5

从上面的例子还可以看出,如果没有显示初始化,那么全局变量、静态局部变量等静态对象会被自动初始化为适当类型的0,而局部对象(也称为自动对象)和在自由存储区里建立的对象(动态对象或者堆对象)将不会被初始化。

原文链接:C++中局部变量可以和全局变量重名吗?_xiaozi_新浪博客

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。