C语言的题 答案是5 6 3 4 怎么算出来的 这个题中fun1和fun2是局部变量还是全局变量

局部变量和全局变量怎么才能分清楚
#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);l
}

在子程序中定义的变量称为局部变量,

在程序的一开始定义的变量称为全局变量。

全局变量作用域是整个程序;

局部变量作用域是定义该变量的子程序。

当全局变量与局部变量同名时:

在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。

fun1中输出5 6, main中输出3 4和换行符。
main中的a,b使用的是最上面声明的全局变量,fun1中的a,b使用的是函数参数列表中的a,b(局部,由main传入的)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-02-13
#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);l
}

执行fun1(5,6)时,由于fun1内又定义a,b,所以fun1内的a,b为局部变量
执行fun2()时,fun2内并未定义a,b,所以fun2内的a,b为全局变量
同理 main()内的a,b也为全局变量
所以结果为5 6 3 4追问

这个题int a=1,b=2;不是全局变量吗 你说的 执行fun1(5,6)时,由于fun1内又定义a,b,所以fun1内的a,b为局部变量 执行fun1(5,6)不是全局变量吗 a=3;b=4在函数体内fun2不就是局部变量吗 你说的我没太看明白 能详细点吗

追答

f1里的a,b是传入的变量

本回答被网友采纳
第2个回答  2015-02-13
文件中变量定义时放在函数体外边,可以简单理解为 全局变量

fun1()里面打印的时候 a,b为形参的a,b,当局部变量与全局变量同名的时候,
同一作用域中,全局变量被隐藏,使用的是局部变量

fun2()函数中修改了全局变量 a,b的值,所以在主函数中打印5,6,3,4追问

int a=1,b=2; 是全局变量吗 那fun1(int a,int b) 不就是1,2吗 fun1(5,6); 和fun2( );是局部变量还是全局变量 void fun2() a=3;b=4; 这个是全局变量还是局部变量

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网