c++为什么这里不能交换两个数的值

#include<iostream>usingnamespacestd;voidSwap(int*x,int*y){int*temp;temp=x;x=y;y=temp;... #include <iostream>
using namespace std;
void Swap(int *x, int *y)
{
int* temp;
temp = x;
x = y;
y = temp;
}
int main()
{
int a = 10, b = 20;

Swap(&a, &b);
cout << "a= " << a << endl
<< "b= " << b << endl;
return 0;
}

为什么int* temp = x 不可以 而int temp = x却可以??
展开
 我来答
2008_shenao
2017-01-12 · TA获得超过555个赞
知道小有建树答主
回答量:306
采纳率:90%
帮助的人:101万
展开全部
因为x和y本身就是地址,你将temp定义成指针(指针本身存储的就是地址),所以temp存储的是地址的地址(a的地址的地址,即x的地址),在做交换自然就会出错了。而将temp定义成整形,存储的就是x的值,也就是a的地址,自然就可以正常交换了!
大雅新科技有限公司
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,... 点击进入详情页
本回答由大雅新科技有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式