【C++】深入基础之交换数值的方法

非引用形参

void show(int a){

a=a+1;
}

int a=1;
show(a)///----a=1
//因为非引用参数,真正的a没传进去,而是a的copy

 

1.在调用函数中使用指针进行交换【非引用指针形参】

非引用:传的都是copy,但是是指针copy,因为指针即地址,地址copy,还是原来的地址。

#include <iostream>
using namespace std;
 
void swap(int *a, int *b)
{
//形参指针a代替实参指针相当于*a=pa,指向同一值
	int temp ;
	temp = *a;
	*a = *b;
	*b = temp;
//int *temp=new int;//给指针动态分配内存
//*temp=*a;
//...

//int *temp;
//temp = a;  相当于temp初始化了,所以不会报错
}
 
int main()
{
	int m = 3;
	int	n = 4;
	int *pa = &m;
	int *pb = &n;
	cout<<"交换前数值:m="<<*pa<<" n="<<*pb<<endl;
	swap( pa , pb );
	cout<<"交换后数值:m="<<*pa<<" n="<<*pb<<endl;
 
	return 0;
}

2.形参为引用【引用形参】

//a是pa的别名,对a操作就是对pa操作
void swap(int& a,int& b)
{
	int temp=a;
	a=b;
	b=a
}

swap(pa,pb);

3.加减法

void swap(int& a,int& b)//6,1
{
	a=a+b;7
	b=a-b;
	a=a-b;
}

4.位运算 异或^

a=a^b;//相当于a=a+b
b=a^b;//
a=a^b;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值