swap函数中的交换 【指针】 学习笔记

swap函数中的交换,主要是这三种情况

第一种

void swap(int *a, int *b)
{
    int temp = *a;
    *a = *b;
    *b = temp;

}

表示的是把指针所指向的系统空间的值发生交换

所以这个函数交换主函数中也会改变

第二种

void swap(int *a, int *b)
{
	int *temp = a;
	a = b;
	b = temp;	
}

这个函数中,交换的只是形参指针中指向

实参,系统空间都没发生变换 所以主函数中的值不会交换

第三种

void swap(int &a, int &b)
{
	int temp = a;
	a=b;
	b = temp;
}

这个函数中先是把地址传进去,表示跟主函数中的变量共用一个空间

所以这个值交换了就代表系统空间中的值交换了

所以这个主函数中的值肯定是会交换的

这里有一些易混淆的点

void swap(int *&a, int *&b) 
{
	int *temp = a;
	a = b;
	b = temp; 
}

这个我们可以看成是第二种情况,只是指针的指向发生变化

系统中的地址和空间没有发生变化

void swap(int *&x, int *&y)
{
    int temp = *y;
    *y = *x;
    *x = temp;
}

这个其实我们也可以看成第一种情况,把先是把地址传进去

然后是让指针指向的值,也就是系统的值发生交换

主函数中的值肯定是也会发生交换

其实吧,主要就是看系统里的那个系统空间的值有没有改变

如果有主函数中的值也就是系统里的值,会发生变化

以上都是个人对这个swap函数交换和指针的理解

这篇文章以互相学习为主,有什么错的还望告知,谢谢啦

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值