向函数传值的时候形参不会影响实参的值,可是下面的程序运行结果为什么是5 6 3 4啊,搞不懂,跟全局变量

向函数传值的时候形参不会影响实参的值,可是下面的程序运行结果为什么是5634啊,搞不懂,跟全局变量有关吗。。求大神指教,,谢谢了#include<stdio.h>inta... 向函数传值的时候形参不会影响实参的值,可是下面的程序运行结果为什么是5 6 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);
}
展开
 我来答
a1522887961ct
2013-07-26 · TA获得超过492个赞
知道小有建树答主
回答量:166
采纳率:0%
帮助的人:148万
展开全部
没错,是5634.先运行main----fun1(5,6)----显示5,6----fun2----a=3,b=4----显示3,4
以上是运行顺序。你一开始的int a=1,b=2;只是声明了a和b两个变量,他们的赋值你在fun1中就更改了。
追问
谢谢你,函数形参的值不是不影响实参吗,最后输出的为什么是函数里面的3.4啊,而不是1,2有点不懂。
追答
你的fun2是不返回值的,和形参、实参没有关系了。你的fun1是带参数的,fun2不带,他只是把你一开始的a=1,b=2变成a=3,b=4了
wdwy003
2013-07-26 · TA获得超过2113个赞
知道小有建树答主
回答量:1073
采纳率:0%
帮助的人:1043万
展开全部
main()
{
fun1(5,6); //这里是传值 局部变量ab 屏蔽了全局的ab 所以全局的ab的值不受影响 输出的值是fun1的形参的值
//printf("% d% d\n",a,b);你可以加上这一句 看一下

fun2(); //这里ab的值变了 因为ab是全局变量 全局变量任何函数都可以访问到 ab若是局部变量的话 这里会出错。
printf("% d% d\n",a,b);
}
追问
谢谢你,函数形参的值不是不影响实参吗,最后输出的为什么是函数里面的3.4啊,而不是1,2有点不懂。
追答
fun2函数访问的是全局变量的ab 是对ab的实际赋值操作 你的理解呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ba5ed8e
2013-07-26
知道答主
回答量:18
采纳率:0%
帮助的人:6.9万
展开全部
void fun1(int a ,int b) 这里是局部变量,作用范围只在这个函数内,传入的是5,6输出也是5,6
{
printf("% d% d",a,b);
}

void fun2()
{
a=3,b=4; }
main() 这里a,b都是全局变量,在fun2()中设置为3,4
{
fun1(5,6);fun2();
printf("% d% d\n",a,b); 所以这里a,b输出也为3,4
}
追问
谢谢你,函数形参的值不是不影响实参吗,最后输出的为什么是函数里面的3.4啊,而不是1,2有点不懂。
追答
因为a=1,b=2是全局变量,调用fun2()后将全局变量a,b的值更改了,所以输出的是3,4
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
周生008
2013-07-26 · TA获得超过1221个赞
知道小有建树答主
回答量:1329
采纳率:0%
帮助的人:635万
展开全部
fun1的a,b遵守局部优先原则,所以形参起作用
fun2中用的是全局变量
追问
谢谢你,函数形参的值不是不影响实参吗,最后输出的为什么是函数里面的3.4啊,而不是1,2有点不懂。
追答
形参不影响实参的值
fun2中你改变了全局变量的值,所以是3,4
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式