全部问题 > 当前问题

什么叫全局变量被屏蔽,为什么被屏蔽

khūńτōrīā 2015-8-14 13:57:36

共 5 个回答

祁老师 2015-8-14 14:08:04

在一个函数里面 如果出现同名的变量  全局变量就会被屏蔽  

khūńτōrīā 2015-8-14 14:12:02

回复 祁老师:即使不是在本函数中出现的,在别的函数中出现,全局变量也会被屏蔽?

khūńτōrīā 2015-8-14 14:13:34

回复 祁老师:那这样只要有一个函数中出现,那所有函数输出的值都不会是全局变量的值了,是吧

祁老师 2015-8-14 14:21:34

回复 khūńτōrīā:因为主函数这里输出a b 但是这边没有定义a b 所以开始的a b赋值是全局变量 但是一个规则是 在一个源文件中,全局变量被“屏蔽  

对照着题目理解会比较容易   

khūńτōrīā 2015-8-14 15:11:21

还是不明白在一个源文件中,全局变量被“屏蔽  啥意思

就近原则理解可以吗?

全局变量是a=1,b=2,然后在fun函数中局部变量是a=3,b=4,然后就按局部变量输出

问题来自: 形参和实参
有以下程序:
#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。