全部问题 > 当前问题

为什么,fun1输出的是56?

可可 2015-12-21 22:26:41

共 4 个回答

嘿嘿大人 2015-12-21 22:37:57

因为在fun1中定义形参是a和b,这个时候全局变量a和b被局部变量形参a和b屏蔽了,而在主函数调用fun1时,实参是5和6,,所以传入fun1形参a和b的值是5和6,所以在fun1输出a和b的值时是5和6;当局部变量和全局变量同名的时候,局部变量会屏蔽全局变量

可可 2015-12-21 22:52:15

回复 嘿嘿大人:局部全局变量和形参实参有什么联系 ???

可可 2015-12-21 22:59:15

回复 嘿嘿大人main()
{ fun1(5,6); fun2();
  printf("%d%d\n",a,b);
}  在这段程序中   fun1(5,6);      是函数调用的格式,括号里面实参还可以这样写的吗?用逗号分开

嘿嘿大人 2015-12-21 23:07:34

回复 可可:形参就是作用域在自定义函数中的局部变量,实参和变量没啥特别的关系,你可以理解为实参就是给形参赋值的。

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