当我像这样通过引用传递变量时:
void function(int &r){
//do something
}
int main(){
int a = 100;
function(a);
return 0;
}
实际发生了什么? r
是否包含整数变量的地址?怎么找到它?
答案 0 :(得分:0)
您的整数a
的引用将作为参数传递给您的函数。现在,在您的函数中,如果您更改r
指向的值,它也会反映在a
中。
因此,如果您在函数中指定r=2
并在main中打印a
,则会看到a
的值为2.
您的程序有一些语法错误,但我可以理解您想传达的内容。
编辑:
从用户的角度来看,它就像你在函数中接收一个值,除了从调用者可以看到对它做的修改。传递大型物体时,它在性能方面也更便宜,因为不需要复制。
它在实践中的工作原理是编译器实际上传递了一个指向函数的指针。但由于调用者必须有一个有效的对象才能传递给函数,因此参考文件与指针相反无效,因此您无需检查NULL
值。