swap关于指针的使用

先看下面两个例子:

#include <iostream>     // std::cout
#include <utility>      // std::swap

int main() {

	int x = 10, y = 20;                  // x:10 y:20
	int* p1 = &x;
	int* p2 = &y;
	std::swap(*p1, *p2);                  // x:20 y:10 ,p1->x=20,p2->y=10
	return 0;
}

#include <iostream>     // std::cout
#include <utility>      // std::swap

int main() {

	int x = 10, y = 20;                  // x:10 y:20
	int* p1 = &x;
	int* p2 = &y;
	std::swap(p1, p2);                   // x:10,y:20,p1->y=20,p2->x=10
	return 0;
}

上面两个例子,说明了当交换指针时,传不同的参数给swap,结果不同,虽然最后指针所指的值都改变了,但方法是不同的。这就像开锁,原先有两把万能钥匙分别锁两个柜子,钥匙分别存放在两个抽屉里,第一种方法就像是把两个柜子换了,所以抽屉里锁子打开柜子的东西正好换了。第二种办法就像是把两把锁换了,但锁能开的柜子不变,但是抽屉里打开柜子的东西也换了。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值