+ -
当前位置:首页 → 问答吧 → C++中引用的问题,求解释

C++中引用的问题,求解释

时间:2011-12-16

来源:互联网

#include<iostream>
using namespace std;


int main(){
int a = 5, b = 6;
void swap(int &x, int &y);
swap(a,b);
cout<<"a="<<a<<"b="<<b<<endl;
}
void swap(int &x, int &y){
int temp;
temp = &x;
&x = &y;
&y = temp;
}

这个程序中a,b两个值就是交换不了,是为啥啊??

作者: GAOHUACSDN   发布时间: 2011-12-16

int temp;
temp = x;
x = y;
y = temp;

改成这样。。再去复习引用部分的内容 。



作者: mingliang1212   发布时间: 2011-12-16

但当吧swap()函数改为全局的,又可以正常交换??为啥??求大虾解释啊!!

作者: GAOHUACSDN   发布时间: 2011-12-16

楼主这样写code 能build 过?? 奇怪了哦。

作者: xhd3767   发布时间: 2011-12-16

temp = &x;
&在这里,是取变量的地址

作者: ouyh12345   发布时间: 2011-12-16

不好意思,写错了,那时我在用指针试的时候用的,没改过来,
应该是
temp = x;
x = y;
y = temp;

作者: GAOHUACSDN   发布时间: 2011-12-16

引用 2 楼 gaohuacsdn 的回复:
但当吧swap()函数改为全局的,又可以正常交换??为啥??求大虾解释啊!!


应该是调用了std::swap;你换个名字一定不能交换 。。换成 Swap

作者: mingliang1212   发布时间: 2011-12-16

哦,我去试试

作者: GAOHUACSDN   发布时间: 2011-12-16

哦,我去试试

作者: GAOHUACSDN   发布时间: 2011-12-16

引用 6 楼 mingliang1212 的回复:
引用 2 楼 gaohuacsdn 的回复:
但当吧swap()函数改为全局的,又可以正常交换??为啥??求大虾解释啊!!


应该是调用了std::swap;你换个名字一定不能交换 。。换成 Swap

恩的确是名字的问题,谢谢了!!

作者: GAOHUACSDN   发布时间: 2011-12-16