Re: [請問] PASCAL程式語言參數傳遞問題

看板Programming作者 (堅持阿伏哥聯盟)時間14年前 (2011/04/01 22:53), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《supercygnus (......)》之銘言: : ※ [本文轉錄自 ask 看板 #1Db8QBRR ] : 作者: supercygnus (......) 看板: ask : 標題: [請問] PASCAL程式語言參數傳遞問題 : 時間: Thu Mar 31 21:50:00 2011 : 在下列片段虛擬碼中,若參數傳遞使用(1) Call-by-Value,(2)Call-by-Address, : 壜(3) Call-by-Name,計算執行後,x 與y 最後值分別為何? : program main(); : int x, y; : procedure SUB(int a, b, c, d); : begin : b:=a+d; : a:=c; : d:=d+1; : return : end; : begin : x:=1; : y:=2; : SUB(x, y, x+y, y); : end : (1) x=1,y=2 : (2) x=3,y=4 : (3) x=4,y=4 : 第一題我知道,但是第2跟第3題到底要怎麼看呢? : SUB副程式裡面return 到底在return 什麼呢~? 謝謝 這是void return 答案是看xy有沒有被sub影響 (2) call-by-address代表用同記憶體空間, 而未定義輸入則會新闢記憶體空間儲存在此稱為z SUB(x,y,x+y,y) ^^^z:=x+y=3 -> b:=a+d // y:=1+2=3 -> a:=c // x:=z=3 -> d:=d+1 // y:=3+1=4 finally, x=3 and y=4 (3) call-by-name類似於call-by-address但可看成將運算式的輸入直接在sub下展開 SUB(x,y,x+y,y) -> b:=a+d // y:=1+2=3 -> a:=c // x:= x+y = 1+3=4 -> d:=d+1 // y:=3+1=4 finally, x=4 and y=4 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 68.98.169.112

04/01 22:57, , 1F
認真回文給個推
04/01 22:57, 1F

04/02 17:42, , 2F
thanks!!
04/02 17:42, 2F

04/02 20:09, , 3F
一樓口惠而實不至
04/02 20:09, 3F
文章代碼(AID): #1DbUS6fZ (Programming)
文章代碼(AID): #1DbUS6fZ (Programming)