& 传值
按引用传值,允许被调用的函数能够访问调用函数内的变量,即在被调函数内修改参数值,主调函数内的值也跟着发生变化,因为二者是同一块地址。
如上图所示,在调用者函数——main函数中声明了一个times变量,并赋值给它为20,然后调用grumpy(int &x)
这个函数,此时在grumpy 中,x就是times的别名,操作x就是操作times。
还有,初学者可能会认为,函数参数是引用类型,那我事先也要声明一个引用指向我想传递的参数,再把这个引用传给被调用的函数 虽然这样也行得通,但是多此一举的,实质上还是没理解按引用传参的实质。
void dealIt(int &x)
{
x -=1;//把调用者函数内的变量也给修改了
}
int main()
{
int temp = 1;
//以下操作是行得通但是多此一举的
//int &x = temp; //声明一个引用指向想传递的参数
//dealIt(x); //使用这个引用进行传参
//以下是正确调用
dealIt(temp);
//此时的temp的值是0
cout << temp << endl;
return 0;
}