首先一个简单的问题,如何实现交换两个整数的值? 想必每个有编程经验的人都能作答。
C语言用指针实现如下:
void swap(int * a, int * b){
int tmp = *a;
*a = *b;
*b = tmp;
}
C++可以使用引用实现如下:
void swap(int & a, int & b){
int tmp = a;
a = b;
b = tmp;
}
顺便记录另外两个很有意思的实现,不用中间变量tmp (面试中可能会问到):
void swap(int & a, int & b){
a = a + b;
b = a - b;
a = a - b;
}
void swap(int & a, int & b){
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
然后,言归正传,假如需要实现任意相同类型两数交换值应该怎么办呢ÿ