您的位置:首页 > 其它

浅谈关于两个整数的交换函数的N种实现方式

2014-12-28 23:59 288 查看
1.用第三变量进行交换

#include<stdio.h>//C语言头文件标准输出
//#include<iostream>  using namespace std; //C++标准输出流头文件
#define  swap_1(x,y,t) ((t)=(x),(x)=(y),(y)=(t))//此处为宏定义交换,无分号
void   swap_2(int x,int y);//函数声明,注意分号
void   swap_3(int *x,int *y);
void   swap_4(&a,&b);
void   swap_5(int *a,int *b);

int main()
{
int a=1,b=10,temp;
printf("a=%d,b=%d",a,b);
swap_1(a,b,temp);
//swap_2(a,b);
//swap_3(&a,&b);
//swap_4(a,b);
//swap_3(&a,&b);
printf("a=%d,b=%d",a,b);
return 0;
}
void swap_2(int x,int y)//此函数操作无法将形参值传给实参当此函数执行完时
{
int t;  //当此函数执行完时,其中的形参就被操作系统在栈中释放掉不传给实参
t=x;
x=y;
y=t;
}
void swap_3(int *px,*py)//传指针,即把参数的地址给指针变量
{
int temp;
temp=*px;
*px=*py;
*py=*px;

}
void swap_4(&a,&b)//C++中的传引用
{
int t;
t=x;
x=y;
y=t;
}
//C++中的模板 template <class T>void swap(T&a,& b)
//可以在C++中直接 std::swap(&a,&b)
2.不使用第三量进行交换
void swap_5(int *a,int *b)
{
*a=*a^*b;
*b=*a^*b;
*a=*a^*b;//存在bug
/*   *a=*a * *b//注意b为0时
*b=*a/*b
*a=*a/*b

*a=*a+*b;
*b=*a-*b;
*a=*a-*b;//此方法不错
*/
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐