下面程序运行后,其输出是( )int x,y;one(){int a,b;a=25,b=10;x=a-b;y=a+b;}main(){int a,b;a=9,b=5;x=a+b;y=a-b;one();printf(“%d,%d\n”,x,y);}(因为调用one函数,是实参传递给形参,单向传递,为什么不对???)
3 回答

慕仙森
TA贡献1827条经验 获得超8个赞
全局引用的关系,任何的子函数都可以改变其值。如果改成
int x,y;
one()
{int a,b;
a=25,b=10;
x=a-b;y=a+b;
}
main()
{int a,b;
int x,y;
a=9,b=5;
x=a+b;y=a-b;
one();
printf(“%d,%d\n”,x,y);
}
结果就是14,4了

慕莱坞森
TA贡献1810条经验 获得超4个赞
是单向传递不错,但x和y是全局变量,不是你通过参数传递过去的,全局变量可以供所有的函数使用
也就是你one和main中使用x和y其实是同一个x和y而不是one和main自己定义的x和y,one中改变了x和y的值
则main中的x和y也会随之改变。

慕尼黑5688855
TA贡献1848条经验 获得超2个赞
需要注意的是:int x,y;这个是定义一个全局变量
最后
printf(“%d,%d\n”,x,y); 输出的也是全局变量
你在one(){}这个方法里面对x,y进行了赋值,所以输出的结果是15,35
- 3 回答
- 0 关注
- 86 浏览
添加回答
举报
0/150
提交
取消