文章目录
首先,交换变量值的函数传值肯定不行,要么传引用,要么传指针,以传引用为例
使用临时变量
|
|
不使用临时变量
位运算
|
|
可以这么理解
|
|
如此完成交换。
但是该位运算存在一个问题,对于数组的交换要注意。
有一次写快速排 大专栏 C++中交换两个元素值序的时候使用了位运算的swap,结果数组里出现了好多0。分析之后原因如下
比如数组为a = {3, 1, 2},然后调用了swap(a[1], a[1]),那这样会导致什么呢
|
|
即a[1]会被置为0。
当然,调用者本就应该来判断待交换的索引是否相同,如果相同就不交换了。但函数本身最好也要加上不等性判断
|
|
算术运算
|
|
可以这么理解
|
|
同样存在上面的问题