#include <iostream>

using namespace std;


//这个读地址符号的作用就是我们对函数内形参做的任何操作都会影响到外面的变量, 达到一个双向绑定的效果
int max(int &x, int &y){
    x = 10, y = 20;
    
    if(x > y) return x;
    return y;
}

//有了读地址符号就可以实现交换了
//没有返回值的函数写void
//这个前面的int是函数类型 return的话得看函数类型return 是什么类型return什么类型的变量 如果没有函数类型的话就return本身 一定要一一对应不然就会报错 return就相当于循环当中的一个break
int swap(int &x, int &y){
    int t = x;
    x = y;
    y = t;
}

int main(){
    int a, b;
    
    cin >> a >> b;
    
    swap(a, b);
    
    // cout << max(a, b) << endl;
    
    cout << a << ' ' << b << endl;
    
    return 0;
}
//函数重载  c++中定义多个相同名字的函数是没有关系的 只要不是函数名和返回的参数类型都一样的话是没有关系的

//数组内部变量的改变可以影响外部改变 一维和多维数组都是如此

// 有种函数形参可以赋默认值 没有传参他就是默认值
// void foo(int a, int b = 10){
//     cout << a << ' ' << b << endl;
// }

//内联函数 这样写的话在功能上是没有区别的 但是在编译器编译代码的时候就不会把他编译成一个函数了 他就会把所有调用这个函数的地方 全部替换成这个函数体里面的内容
//相当于在调用函数的地方把这个函数展开 这样写的好处是在某些情况下会让代码的运行速度快那么一点
// inline void foo(int a, int b = 10){
//     cout << a << ' ' << b << endl;
// }