Re: [課業] 程式語言考題一問

看板Examination作者 (開弓)時間10年前 (2015/04/21 22:18), 10年前編輯推噓5(5011)
留言16則, 5人參與, 最新討論串2/3 (看更多)
※ 引述《pringles27 (拉拉)》之銘言: : 請問各位大大 : 103年高考程設問題 : 題目: : program b(){ : function a(x:integer){ : x=x+1; : write(x,y); : } : var y:integer; : y=1; : a(y); : write(y) : } : 其中以Y is passed by reference : 印出的結果為多少? : 高點答案是 2 1 而非 2 2 : 2 2 : 好奇的地方是reference不是共用記憶體 : 所以y在裡面時不是應該已變為2了嗎? : 還是須等到}結束才把結果回寫回記憶體呢? : 是我觀念有誤嗎? 請大大解惑?? 我解釋一下,如果有錯請各位見諒,有一段時間沒看書了orz pass by reference & pass by address是有差別的 pass by reference 是在找不到的時候順著鏈結往外找,直到找到參考為止 但如果找得到就直接使用,最後等function a()結束之後,把值寫回被參照的變數內 換句話說.. 原題目裡面function a()有內容中有定義x,可是沒有定義y 因此使用x的時候,直接用參照值,參照到a(y)中y的值 但因為function a()內容中沒有定義y 所以function a()內部需要y的時候就必須透過鏈結方法向外層去找 最後找到外面的y 所以function a()裡面write(x,y)的結果是2 1 最後等到function a ()結束之後,參照的變數值會被參照回去 這邊要說一下 reference是相互的,但不是立刻改變的 參照變數與被參照變數的關係是 參照變數會去取用被參照變數的值 等到function 結束之後,才會把最後的結果回傳給被參照變數儲存 所以最後寫回去之後,外面的write(y)就會輸出2 想想看什麼叫做reference? 參考參照 實際上並不是不同變數名稱使用同一個address對應的值 只是參考使用而已 不知道這樣你看得懂嗎...@@ -- 我應該是沒寫錯... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.70.223.186 ※ 文章網址: https://www.ptt.cc/bbs/Examination/M.1429625896.A.5CC.html ※ 編輯: ARCHERDEVIL (61.70.223.186), 04/21/2015 22:38:30

04/21 23:43, , 1F
推,好文
04/21 23:43, 1F

04/21 23:50, , 2F
傳參考不是應該只是將傳進去的y 取一個暱稱叫x
04/21 23:50, 2F

04/21 23:51, , 3F
但是實際上 x 仍然是y 嗎 ??
04/21 23:51, 3F

04/21 23:51, , 4F
所以 x 變了 真正的y 也會變
04/21 23:51, 4F

04/22 00:02, , 5F
A reference variable is an alias.
04/22 00:02, 5F

04/22 00:04, , 6F
應該是用同一塊記憶體空間吧@@?
04/22 00:04, 6F

04/22 00:07, , 7F
Call by value: get a copy
04/22 00:07, 7F

04/22 00:07, , 8F
Call by reference:get an alias
04/22 00:07, 8F

04/22 00:16, , 9F
直接跑程式出來結果也是222
04/22 00:16, 9F

04/22 00:32, , 10F
謝謝大大 若以這角度來看 的確合理
04/22 00:32, 10F
不要謝太快... 我說的其實不一定正確... 就像上面直接跑程式的lei大說的一樣 跑程式的話答案是222 我說一下這種說法哪裡看來的:高點的程式語言(我忘記是胡世雄還是王致強 除非我記錯出處...@@ 因為我手上現在沒有書 如果我寫錯的話... 先在這邊道個歉orz

04/22 01:04, , 11F
reference跟address的差別不是應該是差在自身等於別人的
04/22 01:04, 11F

04/22 01:04, , 12F
address跟自身參考到別人的address的差別嗎@@?
04/22 01:04, 12F

04/22 01:09, , 13F
指向
04/22 01:09, 13F

04/22 01:10, , 14F
這篇的說法第一次看到@@有沒有相關資料可以參考一下?
04/22 01:10, 14F

04/22 03:34, , 15F
樓上我也覺得reference和address是這樣@@
04/22 03:34, 15F
※ 編輯: ARCHERDEVIL (61.70.223.186), 04/22/2015 06:17:22

04/23 06:56, , 16F
推!!謝謝弓大。
04/23 06:56, 16F
文章代碼(AID): #1LDbmeNC (Examination)
文章代碼(AID): #1LDbmeNC (Examination)