Re: [請問] PASCAL程式語言參數傳遞問題
※ 引述《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
04/02 17:42, 2F
→
04/02 20:09, , 3F
04/02 20:09, 3F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章