C++局部变量和全局变量的问题.

来源:百度知道 编辑:UC知道 时间:2024/05/24 10:01:00
#include<iostream.h>
int a,b;
void fun()
{a=100;b=200;}
void main()
{int a=5,b=7;
fun();
cout<<a<<b;
}

为什么结果为57而不是100200

因为如果局部变量和全局变量重名时,局部变量会覆盖 全局变量,就是说全局变量在同名局部变量的作用域内变得不可见,你的程序中在main函数中的a,b覆盖了全局变量,虽然全局变量的值被改为100,200,但是在main函数中可见的a,b为局部变量。所以为5,7

void fun()
{a=100;b=200;}
这里的a、b是全局变量,在运行fun函数时起作用,值被改变。但main函数内部又定义了定义的a、b,这里定义的是局部变量,在子函数内部,相同名字的局部变量会把全局变量给屏蔽,全局变量对该子函数没有作用力。

cout<<a<<b;
这里面的a和b