Re: [问题] 用函数设定参照的问题

楼主: cuteSquirrel (松鼠)   2023-11-11 21:51:52
这个范例是想展现 reference的特质
reference 相当于原本变量的别名 alias
(有些中文翻译会写成 "参考")
reference 宣告的时候就必须初始化绑定对象,而且一旦绑定,就固定绑定他一辈子。
范例中的 x 作为 传参考int& 到function f里面,绑定的是当初外面呼叫的int a=1
这时候在function f 里面, x 的数值还是 1 (因为绑定的是 int a)
接着,function f 又return x 给原本的呼叫者
所以,回来 f(a)这一行 得到的就是 x
x 刚刚讲过,绑定的是原本的变量a
这时候对 x 赋值 等价于 对变量a 赋值
f(a) = 5 等价于 x = 5 等价于 a = 5
所以,a 的值最终是 5
下方的范例做了小修改,可以留意,其实 x 和 a 操作的对象都位在同一个内存位置。
https://onlinegdb.com/ZxFCaqEKJQ
※ 引述《amamoimi (佛仔)》之铭言:
: 各位晚安打扰了
: https://onlinegdb.com/_DyNuxd2H
: 我一直不太明白为什么为什么这样写是合法的
: f(a)=5这行不是在把function call设值吗
: 但是照理来说只能assign value给变量吧?(gpt这样跟我讲的,但是他又说我的例子不是
: 设值给f(a)@@)
: 不好意思我好像越问越基本了...谢谢大家
:
:
作者: amamoimi (佛仔)   2023-11-12 09:31:00
谢谢大大那请问为什么其他变量不能这样使用呢?例如如果我把f(x)换成int f(int x)的话 这个function call 就不能被赋值了。这是参照变量的特性吗?
作者: wulouise (在线上!=在电脑前)   2023-11-12 10:22:00
return int的话那是暂时变量,你给暂时变量值不存他,跟没做事一样,下一秒returned int就消失了建议你找一本书看,这些范例从都不是给function值
作者: amamoimi (佛仔)   2023-11-12 11:03:00
好的 谢谢谢谢您
楼主: cuteSquirrel (松鼠)   2023-11-12 17:39:00
关键点在于传入的 传出的 都是int& 传参考任何对于参考的操作,都会反映在原本的绑定对象上。reference参考 做什么赋值 a就做什么=====若回传的是普通一般型别 就不具有这个特质
作者: amamoimi (佛仔)   2023-11-12 18:45:00
嗯嗯我知道 谢谢大大

Links booklink

Contact Us: admin [ a t ] ucptt.com