函数参数里的a和&a的区别

函数参数里的a和&a的区别

//在gcd的过程上增加了拓展
inline int exgcd(int a, int b, int &x, int &y)
{
    if(b == 0){
        x = 1, y = 0, return a;
    }
    int d = exgcd(b, a % b, x, y);
    int z = x;x = y, y = z - y * (a / b);
    return d;
}

函数里的a,b,&x,&y的区别

你可以简单点这样理解:
int a 是在调用时把输入参数复制一份放到a里面,这样有两份独立数据,互不影响
int &x是在调用时把输入参数直接整体拿过来了,你在函数里修改x,那么调用者的对应的那个变量也被改了

a是数值,&a是指变量a的地址。涉及到值传递和地址传递问题。

a是形参,只是传入数值,&x是引用传参,函数内可以通过修改x的值,实现修改外部传入的实参值
比如外部调用为:
int a=0,b=0,x=0,y=0;
exgcd(a,b,x,y);
如果函数内有语句 x= 10,a=10,那么函数外的a值没有变化,但x值能够被修改成10

参数里那个int &x; 叫做引用,相当于给传进来的实参取了一个别名,如果在自定义函数里这个x值被改变了,它对应的实参的值也会改变,本质上它们就是同一个东西有两个名字