浅谈关于两个整数的交换函数的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;//此方法不错 */ }
相关文章推荐
- 交换两个整数的三种方式(java实现)
- 指针学习:指针变量作为函数参数实现交换两个整数
- Java中异或运算实现两个整数的交换以及其功能函数实现
- 不用判断性语句,实现求两个整数中较大数的函数
- 为什么异或运算可以实现两个整数的交换,而无需借助第3个临时变量
- 不用判断性语句,实现求两个整数中较大数的函数
- [导入]不用判断性语句,实现求两个整数中较大数的函数
- 交换函数的两种不同的实现方式------地址传递和引用参数
- java中如何实现具有交换两个整数值
- 不用判断性语句,实现求两个整数中较大数的函数
- 大三时候实现的,关于大整数(超过long范围)加减乘除操作的头文件,并包含了实现RSA加解密的函数
- 交换函数的两种不同的实现方式------地址传递和引用参数
- 不用判断性语句,实现求两个整数中较大数的函数
- 关于APUE里面TELL_WAIT()之类函数的两种实现方式
- 指针变量作为函数参数实现对输入的两个整数按大小顺序输出
- 交换函数的两种不同的实现方式------地址传递和引用参数
- 将任务4的解决用一个项目多个文件的方式实现,其中两个类的声明放在一个.h文件中,每个类的成员函数分别放一个文件,main()函数用一个文件。
- 关于两个长整数相乘的实现
- 关于交换两个整数的三种方法
- 黑马程序员-- C语言交换两个整数变量值几种函数比较