几种交换两个数函数(swap函数)的写法和解析

#include <iostream>
using namespace std;

/*值传递,局部变量a和b的值确实在调用swap0时变化了,当结束时,他们绳命周期结束*/
void swap0(int a, int b)
{
	int tem = a;
	a = b;
	b = a;
}

/*没有初始化指针就开始用,该函数是有问题的*/
void swap1(int *a, int *b)
{
	int *tem;					/*注意tem没有分配内存*/

	*tem = *a;
	*a = *b;
	*b = *tem;
}

/*函数内只是指针的变化,指针的值没有变化*/
void swap2(int *a, int *b)
{
	int *tem;

	tem = a;
	a = b;
	b = tem;

}

/*指针传递实现两个数的交换*/
void swap3(int *a, int *b)
{
	int tem;

	tem = *a;
	*a = *b;
	*b = tem;
}

/*指针传递实现两个数的交换*/
void swap4(int &a, int &b)
{
	int tem;
	
	tem = a;
	a = b;
	b = tem;
}

int main()
{
	int num1 = 1;
	int num2 = 2;
	
	//swap0(num1, num2);
	
	//swap1(&num1, &num2);

	//swap2(&num1, &num2);

	//swap3(&num1, &num2);

    swap4(num1, num2);

	cout << num1 << endl << num2 << endl;
	return 0;
}


原文地址:https://www.cnblogs.com/james1207/p/3270967.html