通过引用传递时实际发生了什么

What actually happens when passing by reference

本文关键字:发生了 什么 引用      更新时间:2023-10-16

当我像这样通过引用传递变量时:

void function(int &r){
    //do something
}
int main(){
    int a = 100;
    function(a);
    return 0;
}

到底发生了什么?r是否包含一个整数变量的地址?它是如何找到它的?

整数a的引用将作为参数传递给您的函数。现在在你的函数中,如果你改变了r所指向的值,它也会反映在a中。

如果你在函数中赋值r=2,并在main中输出a,你会看到a的值是2。

你的程序有一些语法错误,但我能理解你想表达的意思。

编辑:

从用户的角度来看,这就好像在函数中接收一个值,只是对它所做的修改对调用者是可见的。在传递大对象时,它在性能方面也更便宜,因为不需要复制。

实际上是编译器传递一个指向函数的指针。但是,由于调用者必须有一个有效的对象来传递给函数,因此与指针相反,引用不能无效,因此您不需要检查NULL值。