最近在看别人的程序的时候,了解到一种新的函数写法。
通常,我么在使用通常来讲,函数通过形参接收实参的数值,并返回相应的结果,这种方式我么成为“按值传递”(pass-by-value),这种传递方法并不会修改原始数值本身。
但是,如果想直接更改正在被调用中的函数中的一个值,就可以通过引用传递的方式来进行实现。
这种方法我们称之为“引用传递”(pass-by-reference)
引用参数传递过程中,被调函数的形式参数也作为局部变量在栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参(本体)的任何操作都被处理成间接寻址,即通过栈中存放的地址访问主调函数中的实参变量(根据别名找到主调函数中的本体)。因此,被调函数对形参的任何操作都会影响主调函数中的实参变量。(此处引用*飘剑如虹 *的博客,原地址https://blog.csdn.net/u013130743/article/details/80806179)
什么叫引用传递?
当使用引用变量作为形参时,它将变为实参列表中相应变量的别名,对形参进行的任何更改都将真正更改正在调用它的函数中的变量。当以这种方式将数据传递给形参时,该实参被称为按引用传递。
为了指明一个函数的形参是按引用传递的,只需要简单的对函数原型的形参类型添加一个&标识即可
例如:
int &a//这里的a就表示一个int类型的引用
为了让大家更清楚的认识到引用传递,这里举个例子:
using namespace std;
int add1(int a, int b)
{
int c = a + b;
return c;
}//按值引用
int a = 1;
void square(int &a)
{
a = pow(a, 2);
}//引用传递
int main()
{
cout <<"1和2加起来等于 "<< add1(1, 2) << endl;
int z = 2;
cout << "before reference 'z'= " << z << endl;
square(z);
cout << "after reference 'z'= " <
输出: