自己总结了一些swap函数的各种实现方法,供大家参考,因C中没有引用,故建立C++文件。
代码如下:
#include<cstdio>
#include<cstdlib>
#include<algorithm>//调用系统函数需要该文件
/*实参传给形参的是实参的一份拷贝,主程序中实参并没有改变*/
void swap1(int x,int y)
{
int temp=0;
temp=x;
x=y;
y=temp;
}
/*只是地址换了,而地址中的内容并没有换*/
void swap2(int *x,int *y)
{
int *temp=0;
temp=x;
x=y;
y=temp;
}
/*可以实现交换,因为地址中的内容变了*/
void swap3(int *x,int *y)
{
int temp=0;
temp=*x;
*x=*y;
*y=temp;
}
/*可以交换,地址中的内容实现了交换*/
void swap4(int x[],int y[])
{
int temp=0;
temp=x[0];
x[0]=y[0];
y[0]=temp;
}
/*可以交换,地址指向的内容发生了交换*/
void swap5(int x[],int y[])
{
int temp=0;
temp=*x;
*x=*y;
*y=temp;
}
/*可以交换,传引用,实参只有一份,并不复制,形参交换,实参也交换*/
void swap6(int &x,int &y)
{
int temp=0;
temp=x;
x=y;
y=temp;
}
int main()
{
int a=1;
int b=2;
printf("original:a=%d,b=%d\n",a,b);
swap1(a,b);
printf("swap1:a=%d,b=%d\n",a,b);
a=1;b=2;
swap2(&a,&b);
printf("swap2:a=%d,b=%d\n",a,b);
a=1;b=2;
swap3(&a,&b);
printf("swap3:a=%d,b=%d\n",a,b);
a=1;b=2;
swap4(&a,&b);
printf("swap4:a=%d,b=%d\n",a,b);
a=1;b=2;
swap5(&a,&b);
printf("swap5:a=%d,b=%d\n",a,b);
a=1;b=2;
swap6(a,b);
printf("swap6:a=%d,b=%d\n",a,b);
a=1;b=2;
std::swap(a,b);//调用系统函数,可以交换
printf("swap:a=%d,b=%d\n",a,b);
return 0;
}
相信大家看了后会对swap函数有一个清晰的认识了吧!