Chinaunix

标题: C++初学者请教个交换函数的问题 [打印本页]

作者: ciwsecurity    时间: 2009-05-19 21:45
标题: C++初学者请教个交换函数的问题
#include "iostream.h"
void swap(int x,int y);
int main()
{
        int a;
        int b;
        a=2;
        b=3;
        swap(a,b);
        cout << "a=" << a << endl;
        cout << "b=" << b << endl;
        return 0;
}
void swap(int x,int y)
{
        int temp;
        temp=x;
        x=y;
        y=temp;
}

运行结果为何还是a=2,b=3,并没有发生交换,能详细解释一下吗?555555~~~ 大侠们帮帮忙哈!感谢感谢!
作者: jovistar    时间: 2009-05-19 21:57
void swap(int x,int y)
{
        int temp;
        temp=x;
        x=y;
        y=temp;
}
这个函数的x,y,temp都是局部变量,在swap执行完成以后就销毁了,不可能影响main里面的a,b,要交换可以使用指针

[ 本帖最后由 jovistar 于 2009-5-19 22:04 编辑 ]
作者: ciwsecurity    时间: 2009-05-19 22:00
yeah,谢谢谢谢!!!!
作者: ciwsecurity    时间: 2009-05-19 22:05
是不是就是这个意思,由于函数内无法将数值返回,所以数值并没有变化。这个函数没有返回任何数据。

所以必须使用函数引用void swap(int &x,int &y);,这样直接修改了a和b内存中的数据,数据就保存下来了,我这样的理解对吗?
作者: jovistar    时间: 2009-05-19 22:08
原帖由 ciwsecurity 于 2009-5-19 22:05 发表
是不是就是这个意思,由于函数内无法将数值返回,所以数值并没有变化。这个函数没有返回任何数据。

所以必须使用函数引用void swap(int &x,int &y);,这样直接修改了a和b内存中的数据,数据就保存下来了,我 ...

正确的哈哈,要是C++也可以用引用
作者: OwnWaterloo    时间: 2009-05-19 22:10
标题: 回复 #1 ciwsecurity 的帖子
http://bbs3.chinaunix.net/thread-1431742-2-1.html#message10400387
作者: ciwsecurity    时间: 2009-05-19 22:11
太感谢jovistar 老师了!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2