Re: [問題] 用函數設定參照的問題

看板C_and_CPP (C/C++)作者 (可愛的小松鼠)時間5月前 (2023/11/11 21:51), 5月前編輯推噓3(3012)
留言15則, 3人參與, 5月前最新討論串2/2 (看更多)
這個範例是想展現 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)@@) : 不好意思我好像越問越基本了...謝謝大家 : : ---- : Sent from BePTT on my OPPO CPH1943 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.37.175.73 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1699710714.A.1C1.html

11/12 09:31, 5月前 , 1F
謝謝大大
11/12 09:31, 1F

11/12 09:31, 5月前 , 2F
那請問為什麼其他變數不能這樣使用呢?例如如果我把f(x
11/12 09:31, 2F

11/12 09:31, 5月前 , 3F
)換成int f(int x)的話 這個function call 就不能被賦
11/12 09:31, 3F

11/12 09:31, 5月前 , 4F
值了。這是參照變數的特性嗎?
11/12 09:31, 4F

11/12 10:22, 5月前 , 5F
return int的話那是暫時變數,你給暫時變數值不存他,跟
11/12 10:22, 5F

11/12 10:22, 5月前 , 6F
沒做事一樣,下一秒returned int就消失了
11/12 10:22, 6F

11/12 10:22, 5月前 , 7F
建議你找一本書看,這些範例從都不是給function值
11/12 10:22, 7F

11/12 11:03, 5月前 , 8F
好的 謝謝
11/12 11:03, 8F

11/12 11:04, 5月前 , 9F
謝謝您
11/12 11:04, 9F

11/12 17:39, 5月前 , 10F
關鍵點在於傳入的 傳出的 都是int& 傳參考
11/12 17:39, 10F

11/12 17:39, 5月前 , 11F
任何對於參考的操作,都會反映在原本的綁定對象上。
11/12 17:39, 11F

11/12 17:40, 5月前 , 12F
reference參考 做什麼賦值 a就做什麼
11/12 17:40, 12F

11/12 17:41, 5月前 , 13F
=====
11/12 17:41, 13F

11/12 17:42, 5月前 , 14F
若回傳的是普通一般型別 就不具有這個特質
11/12 17:42, 14F
※ 編輯: cuteSquirrel (114.37.175.73 臺灣), 11/12/2023 17:48:35

11/12 18:45, 5月前 , 15F
嗯嗯我知道 謝謝大大
11/12 18:45, 15F
文章代碼(AID): #1bJuRw71 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1bJuRw71 (C_and_CPP)