当前位置: 代码迷 >> C语言 >> 局部变量个全局变量求助
  详细解决方案

局部变量个全局变量求助

热度:111   发布时间:2007-12-06 13:20:23.0
局部变量个全局变量求助
以下这个程序 为什么算出来是(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````

为什么``自己想``
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽
2007-12-06 06:16:45
jxj777

等 级:新手上路
帖 子:91
专家分:0
注 册:2007-10-27
  得分:0 
x1 x2全局变量
x3 x4局局变量
sub(x3,x4)值传递,无返回值,所以不改变形参,函数结束,变量自动释放
sub(x2,x1) 全局变量,函数结束不释放变量,x1=x2,故x1 x2 都为40
----------------解决方案--------------------------------------------------------
  相关解决方案