傳遞引用很容易使用大多數使用指針的語言進行可視化。但在Pascal中,我幾乎看不到指針如何繞過子程序作爲參數傳遞。傳遞參考如何工作?
例如:
var a: array [0..2] of integer;
i : integer;
procedure swap(var x, y: integer);
var temp: integer;
begin
temp := x;
x := y;
y := temp;
end;
begin
i := 0;
a[i] := 2;
swap(i, a[i]);
end.
能否swap(i, a[i]);
程序調用語句與此相當的僞代碼被取代?口譯員是如何在幕後工作的?
var tmpOldArrayExpression, tmpNewFirst, tmpNewSecond : integer;
tmpOldArrayExpression := i;
(tmpNewFst, tmpNewSnd) := swap(i, a[i]);
i := tmpNewFirst; { 2 }
a[tmpOldArrayEession] := tmpNewSecond; { 0 }
你有幫助的鏈接答案的別名規則我的大部分帕斯卡問題。你能再給我一個更多的問題嗎?對於不能即時編譯爲機器碼(JIT)的interperter,它們是否與我的僞代碼類似? – MiP
如果您有其他問題,請詢問另一個問題。關於解釋器(和/或編譯器)是如何工作的,已經有整本書(有許多頁)。我不知道你的意思是「類似於我的僞代碼」。 –
這是這個話題的最初問題,我不認爲我應該重新制作一個新的。 「C#」是什麼意思? – MiP