首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

调用函数与指针解决方案

2012-02-08 
调用函数与指针交换2个数的值swap(int*p1,int*p2){inttemptemp*p1*p1*p2*p2temp}为什么这样不行,如

调用函数与指针
交换2个数的值
swap(int   *p1,int   *p2)
{int   temp;
  temp=*p1;
  *p1=*p2;
  *p2=temp;
}

为什么这样不行,如下:
swap(int   x,int   y)
{int   temp;
  temp=x;
  x=y;
  y=temp;
}
书上虽然说得很明白了,就是由于“单向传递”的“值传递”方式,形参值的改变无法传给实参.但是为什么自己定义别的函数不用指针一样可以,比如自己定义的求2个数大小的max函数,不用到指针一样可以实现值的改变,这是怎么回事啊?


[解决办法]
swap(int x,int y)
{int temp;
temp=x;
x=y;
y=temp;
}
這個只是交換了你傳給swap的2个參數的副本的值。

比如
int a = 5, b = 6;
swap(a, b);的話,其實swap函數是收到了a和b的副本a ',b '。
所以你改變的只是a ',b '的值。

[解决办法]
值传递和指针传递是不一样的!
值传递只是拷贝了副本给形参

热点排行