全部问题 > 当前问题

为什么在源文件中,全局变量被屏蔽?

呱呱 2016-2-18 11:37:06

共 3 个回答

嘿嘿大人 2016-2-18 11:41:16

不是被屏蔽,只是被局部变量覆盖了而已,这样能理解么?

呱呱 2016-2-18 11:46:18

回复 嘿嘿大人:为什么会被覆盖掉啊

最佳答案

嘿嘿大人 2016-2-18 11:49:49

回复 呱呱:算是一种就近规则吧,当自定义函数里面重新定义了与全局变量名相同的变量,那么在该函数体里面用的就是在函数体里面定义的局部变量,但是出了这个函数体就全局变量就恢复了

问题来自: 形参和实参
有以下程序:
#include <stdio.h>
int a=1,b=2;
void fun1(int a, int b)
{ printf("%d%d",a,b); }
void fun2()
{ a=3; b=4; }
main()
{ fun1(5,6); fun2();
  printf("%d%d\n",a,b);
}
程序运行后的输出结果是 ______ 。
A. 1256
B. 5634
C. 5612
D. 3456
答案:B
解析:fun1输出的是形参a、b,所以输出56;fun2赋值的是全局变量a、b,在一个源文件中,全局变量被“屏蔽”,所以最后输出34。连在一起是5634。因此选B。