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

时间:2014-07-24 01:12:22

标签: c++ syntax reference

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

void function(int &r){
    //do something
}

int main(){
    int a = 100;

    function(a);

    return 0;
}

实际发生了什么? r是否包含整数变量的地址?怎么找到它?

1 个答案:

答案 0 :(得分:0)

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

因此,如果您在函数中指定r=2并在main中打印a,则会看到a的值为2.

您的程序有一些语法错误,但我可以理解您想传达的内容。

编辑:

从用户的角度来看,它就像你在函数中接收一个值,除了从调用者可以看到对它做的修改。传递大型物体时,它在性能方面也更便宜,因为不需要复制。

它在实践中的工作原理是编译器实际上传递了一个指向函数的指针。但由于调用者必须有一个有效的对象才能传递给函数,因此参考文件与指针相反无效,因此您无需检查NULL值。