weixin_53650092 2021-04-28 10:44 采纳率: 72.7%
浏览 77
已采纳

C++用指针交换两个变量的值,请问有大佬能解惑吗?

#include <iostream>
using namespace std;
void swap(int *a, int *b, int x, int y) {
	*a = y;
	*b = x;
}
int main() {	
	int x = 900;
	int y = 700;
	cout << "交换前x=" << x << endl;
	cout << "交换前y=" << y << endl;
	cout << endl;
	swap(&x, &y, x, y);
	cout << "交换后x=" << x << endl;
	cout << "交换后y=" << y << endl;
	cout << endl;
	swap(x, y);
	cout << "再次交换后x=" << x << endl;
	cout << "再次交换后y=" << y << endl;
	system("pause");
	return 0;
}

运行结果:

 

我定义了个swap函数,交换x和y的值,里面有4个参数,两个内存地址,两个值,我的思路是直接把内存地址上的值改了,则x和y也就互相交换了值,swap(&x, &y, x, y)这一步是正常的,但是我很奇怪,swap(x,y)也可以交换x和y的值,我定义的函数不应该是4个参数吗?怎么也可以运行,并且可以交换数值,没看不懂。

我是C++初学者,请大佬解惑,谢谢!!!

  • 写回答

4条回答 默认 最新

  • 爱晚乏客游 2021-04-28 10:59
    关注

    swap(x,y)是c++自带的交换函数,你写的4个参数的相当于swap的重载。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog