C++ 通过引用传递时实际会发生什么

C++ 通过引用传递时实际会发生什么,c++,syntax,reference,C++,Syntax,Reference,当我通过引用传递变量时,如下所示: 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 您的程序

当我通过引用传递变量时,如下所示:

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
值。

实际发生了什么?它无法编译,因为代码中有几个错误。如果您不想为这个简单的示例发布正确的代码,为什么要有人花时间来帮助您呢?通常,实现只会在幕后传递一个指针,但据我所知,它没有义务这样做。编译器也可以内联函数,不会传递指针或任何东西。未指定实现定义的etc.@ta.speot.,而不是实现定义的可能的重复项