局部变量个全局变量求助
以下这个程序 为什么算出来是(10,20,40,40)而不是(20,10,40,40) 局部变量和全局变量在这里是怎么回事
int x1=30,x2=40;
main()
{
int x3=10,x4=20;
sub(x3,x4);
sub(x2,x1);
printf("%d,%d,%d,%d\n",x3,x4,x1,x2);
}
sub(int x,int y)
{
x1=x;x=y;y=x1}
----------------解决方案--------------------------------------------------------
调用sub(x3,x4)这个子函数你能交换x3和x4这两个变量的值吗?
sub(int x,int y)你注意这两个形参的类型
----------------解决方案--------------------------------------------------------
噢噢!
全局变量不影响局部的
sub(int x,int y)
{
x1=x;x=y;y=x1这里的X1改了成x就可以了么
----------------解决方案--------------------------------------------------------
sub(x2,x1);
怎么得到40 40 应该是 40 30 吧
----------------解决方案--------------------------------------------------------
回3#楼的,调用sub(x3,x4)后主函数也不能改变x3和x4的值,因为你传进去的实参类型不是指针类型,而是整型。虽然sub(int x,int y)这个函数可以完成交换两个数的功能,传进去的两个值是实参的副本,当调用返回后,局部变量的值被系统自动回收,主函数中的x3和x4并没有改变
[[italic] 本帖最后由 静思 于 2007-12-6 13:33 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
LS100分
----------------解决方案--------------------------------------------------------
那为什么后面的又是 40,40呢 为什么不是40,30呢
----------------解决方案--------------------------------------------------------
因为你交换函数```
中间变量是X1````
为什么``自己想``
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽