不用第三个数交换两个数
#pragma 引用类型作为函数的形参
#include <iostream>
using namespace std;
//函数声明
void swap1(int &x,int &y);
void swap2(int &x,int &y);
void swap3(int* x,int* y);
//主函数
int main(){
//
int a = 5;
int b = 8;
cout << "交换之前" << endl;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "引用传值交换之后" << endl;
//
swap2(a, b);
cout << "a = " << a << endl;
cout << "b = " << b << endl;
//
int c = 20;
int d = 30;
cout << "地址传值交换之后" << endl;
swap3(&c, &d);
cout << "c = " << c << endl;
cout << "d = " << d << endl;
return 0;
}
#pragma 引用作为参数
//函数定义
//引用传递
void swap1(int &x,int &y){
//两值交换不用第三个变量
x = x + y;
y = x - y;
x = x - y;
}
//异或 相异为1
void swap2(int &x,int &y){
//两值交换不用第三个变量
// x 5 y 3
x = x ^ y;
// 0101
// 0011
// -----------
// x 0110
y = x ^ y;
// 0110
// 0011
// ----------
// y 0101 5
x = x ^ y;
// 0110
// 0101
// -----------
// x 0011 3
}
#pragma (指针)地址传递
void swap3(int* x,int* y){
*x = (*x) + (*y);
*y = (*x) - (*y);
*x = (*x) - (*y);
}