[理工] 資結 參數傳遞

看板Grad-ProbAsk作者 (Biu)時間5年前 (2020/07/05 19:59), 編輯推噓1(105)
留言6則, 2人參與, 5年前最新討論串1/1
https://i.imgur.com/Mgr5yR6.jpg
想請問這題為什麼 i 跟 a[ i ] 都被改變了 b:integer 是代表宣告b為區域變數嗎 想請問有宣告跟沒宣告的差別 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.76.123.73 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1593950372.A.680.html

07/05 21:30, 5年前 , 1F
call by name是把名字替換 這題把a看作i ,b看成a[i]
07/05 21:30, 1F

07/05 21:31, 5年前 , 2F
所以swap裡會變成 temp=i ,i=a[i] ,a[i]=temp
07/05 21:31, 2F

07/05 21:32, 5年前 , 3F
再把值帶入得到 temp=3 ,i=a[3]=4, a[4]=3
07/05 21:32, 3F

07/05 21:33, 5年前 , 4F
call by value跟call by name是不一樣的傳遞方式
07/05 21:33, 4F

07/05 21:34, 5年前 , 5F
然後b:integer只是告訴你宣告一個int變數而已
07/05 21:34, 5F

07/06 20:02, 5年前 , 6F
了解了 感謝樓上
07/06 20:02, 6F
文章代碼(AID): #1V0S2aQ0 (Grad-ProbAsk)