几种交换两个数函数(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;

}


你可能感兴趣的:(swap)