} before swap: a = 3, b = 4 after swap: a = 4, b = 3 关于传参⽅式有三种:值传参、地址传参、引⽤传参(C++⽅法),上⾯使⽤的是第三种,引⽤传参,因为这种传参⽅式使得swap⾥⾯实现更为直观。当然,也可以使⽤第⼆种传参⽅式地址传参,不过,值传参是不⾏的哦。
voidswap(int*a,int*b){int temp;temp=*a;*a=*b;*b=temp;} 2.使用加减法运算法: 代码语言:javascript 复制 voidswap(int*a,int*b){*a=*a+*b;*b=*a-*b;*a=*a-*b;} 这种做法可能会导致溢出,从而造成错误。 3.使用位运算法: 代码语言:javascript 复制 voidswap(int*a,int*b){*a=*a^*...
1:voidswap(int*ap,int*bp) 2: { 3:inttmp = *ap; 4:int*ap = *bp; 5: *bp = tmp; 6: } 然后,使用如下方法来实现数据交换: 1:intx = 10; 2:inty = 15; 3: 4: swap(&x,&y); 至此,便完成了数据的交换。现假如有多个不同的类型的数据需要实现交换,在C++语言中使用模版简洁的实现了...
int y = 37; swap(x, y); printf("x:%d; y:%d\n",x,y); return 0; } 【原因解析】: 整形x和y在函数swap内为按值传递,按值传递时,函数不会访问当前调用的实参。函数处理的值是它本地的拷贝,这些拷贝被存储在运行栈中,因此改变这些值不会影响实参的值。一旦函数结束了,函数的活动记录将从栈中弹...
异或交换方法的基本思想是通过两次异或操作交换两个变量的值,而不需要使用额外的变量。这种方法在效率上要高于传统的Swap操作。 下面是使用异或交换方法进行Swap操作的示例代码: c #include <stdio.h> void swap(int *a, int *b){ *a = *a ^ *b; *b = *a^ *b; *a = *a ^ *b; } int main(...
这是最简单的交换方法了,是赋值语句的经典应用!应该是个人都能看懂的吧? 那,能不能把这个功能做成一个函数?嗯,憋说话。先看代码: 该实现方法是将a和b的地址发送给p和q,即p,q中存放的是a,b的地址。p指向a,q指向b,swap函数通过间址访问来对a和b的内容进行修改,从而交换了a和b的值。
a = 2;int b =3;swap(a,b); //一般用到变量数值交换,交换后a=3 b = 2;实现的方法多种...
swap函数一般是一个程序员自定义函数。通常是实现两个变量数值的交换。比如 int a = 2; int b =3;...
异或运算可以达到交换两数的目的,代码如下: void swap(int &a, int &b) { a = a^b; b = a^b; a = a^b; } 但不推荐使用这种方式,附上常用的临时变量方法对比说明。 临时变量方法: void swap(int &a, int &b) { int tmp = a; a = b; b = tmp; }