看板 Prob_Solve 關於我們 聯絡資訊
※ 引述《xxyy (hey)》之銘言: : 下列程式如果參數傳遞的方法為Call by address 其輸出結果為何 : Sub (x,y,z) main () : {x=y+z; {a=1; b=2;c=3 : {y=z-x } call sub(a,b,a+c) : print (a,b,c);} : 為何答案(x,y,z)=(6,-2,3) : 不知有沒有po錯板 @@ : 我是三類組的門外漢 : 請高手解答 首先宣告a = 1 , b = 2 , c = 3 因為 call sub( a , b ,a+c ) => Sub( x , y , z ) 所以在 Sub 函式中 x = a = 1 y = b = 2 z = a + c = 4 接下來 x = y + z 意思是將 x 指定y + z 的值 所以 x = y + z = 2 + 4 = 6 此時 x 已經改變值為 6 所以下一行 y 也是同理指定z - x 的值 y = z - x = 4 - 6 = -2 Sub函式結束後 x = 6 , y = -2 , z = 4 如有錯還請其他高手不吝指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.213.170
lzwei72:大大解的真好 不過z在過程中沒被改過所以仍然是3 10/24 01:27
lzwei72:看錯了 把z搞成c sorry 10/24 01:29
ClubT:因為你最後是print(a,b,c)在sub沒改到z...所以c還是3沒錯 10/25 11:40
ClubT:不然你應該將print(a,b,c)->print(x,y,z)並改寫在sub內 10/25 14:17
march20:好想砍喔, 可是 t大已經回文了 @@ 10/26 03:30
timfanda35:如果不符合版規...就刪吧@@...回了才看到版規...囧> 10/26 20:19