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;//此方法不错
*/
}
浅谈关于两个整数的交换函数的N种实现方式
最新推荐文章于 2024-02-07 16:10:07 发布