全部问题 > 当前问题

这里5 6 不是实参吗,解释怎么是形参啊。谁给解释下这题该怎么看的。

唐淑艳 2015-9-9 22:20:38

共 1 个回答

最佳答案

嘿嘿大人 2015-9-10 08:51:31

这道题考的是全局变量和局部变量,全局变量是在整个程序段之前定义的,在整个程序段都是可以用地,而局部变量是在函数最前头定义的,只在该函数体中有用,优先用地是局部变量,

这道题中main中先调用了fun1,fun1定义形参时就是定义了局部变量,所以在fun1中使用的是局部变量,所以输出了5,6(实参的值传递给了形参,这就是函数调用的作用);

然后调用了fun2,这个函数里面没有重新定义局部变量,所以它用地是全局变量,所以它将全局变量的值改为了a=3,b=4;然后回到主函数,由于主函数也没有局部定义变量,所以也用的全局变量a,b,所以输出的是3,和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。