C语言的一段程序

#include<stdio.h>inta=10,b=20;sub(intx,inty){a=x;x=y;y=a;}main(){intx=20,y=30;sub(x,y... #include<stdio.h>
int a=10 ,b=20;
sub(int x,int y){a=x;x=y;y=a;}
main(){
int x=20,y=30;
sub(x,y);
sub(a,b);
printf("%d,%d,%d,%d",a,b,x,y);}
为什么输出的会是20,20,20,30呢?函数不改变会局部变量的值吗?那a的值为什么又变了呢?
展开
 我来答
鬼眼啊狂
2010-06-29 · TA获得超过417个赞
知道小有建树答主
回答量:87
采纳率:0%
帮助的人:135万
展开全部
呵呵,你对调用函数,全局变量的作用理解的还不够透彻啊
,全局变量a,b不管是在调用函数还是主函数都能改变它的值,现在我们来分析你编的程序
x=20,y=30
sub(x,y);
运行时程序将主函数x,y的值传给了调用函数的x,y.这就是你没有理解的地方调用函数中的x,y并非主函数中的x,y.调用函数中的x,y.就像主函数x,y的克隆,把你的克隆人杀了,你依然不会有任何改变,他们是不同的,调用函数中的x,y只在运行调用函数时存在,调用完毕它们就将消失
所以说运行完sub(x,y)后主函数中x,y没有丝毫改变而a被复了x的值从此a=20,故最后输出a,b,x,y为20,20,20,30
如果你想通过调用函数改变主函数中定义的值可以在调用函数后加一个
return x;
再在主函数里加个
x=sub(x,y);
这样调用函数中的x就复给主函数的x了;一个调用函数中只能有一个return语句

参考资料: 如果您的回答是从其他地方引用,请表明出处

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式