c++ 引用,做何解释?明白的三分钟的事

来源:百度知道 编辑:UC知道 时间:2024/06/04 06:08:33
int main()
{
int a = 123;
int b = fun(a);

b = 456;
}

int& fun(int &x)
{
return x;
}

函数 fun 的参数是引用,返回也是引用

a = 123;
b = fun(a);
变量 b 是不是就是 a的引用了?
函数 返回的引用,是引用的那个变量?

b的值变了,a的值为什么没变,哪里理解错了??

度假中的高手,给咱解释一下,谢谢!!!
一楼的老兄
现在问题是 b的值变了,a的值就是没变 还是 123
运行一下,就可以看出来,根本就不是引用的解释中所说的关系

二楼的老兄
int b = fun(a);
b这里定义时 是不是 b 就成了 fun 参数 a 引用了?fun 返回的引用是哪个变量的引用?

改成 int& b = fun(a);
这样:b的值变了,a的值就变了,因为b是a的引用。

原先int b = fun(a); 是你创造了一个b(新的地址),并把fun(a)返回的a的引用的值传给b(新的地址),b不是a的引用。

引用就是一个变量的别名。
函数fun返回的只是a的一个引用。
b的值变了,a肯定也要变,因为b就是a的一个别名。两个值的实质是一样的。

引用传递的意思是对函数参数进行引用传递,这样函数内对引用的参数进行的修改,实际上就是对实参的修改了。
具体到你的程序,就是在fun里面修改x的值,main里面的a就受到影响,和b没什么关系

b只拿了x的值..

二楼说得对,fun(a)返回的是a的引用,不过b=fun(a)仅表示将返回的值赋给b(其实就相当于b=a),所以b不是a的引用。如果你改成int b = &fun(a) 估计b变a就变。