Pass-by-Reference ist leicht mit Sprachen zu visualisieren, die meistens Zeiger verwenden. Aber in Pascal kann ich kaum sehen, wie die Zeiger Subroutinen als Argumente übergeben.Wie funktioniert Pass-by-Reference?
Zum Beispiel:
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.
Kann die swap(i, a[i]);
Verfahrensaufrufanweisung mit diesem Ersatz Pseudo-Code ersetzt werden? Arbeiten Dolmetscher so hinter den Kulissen?
var tmpOldArrayExpression, tmpNewFirst, tmpNewSecond : integer;
tmpOldArrayExpression := i;
(tmpNewFst, tmpNewSnd) := swap(i, a[i]);
i := tmpNewFirst; { 2 }
a[tmpOldArrayEession] := tmpNewSecond; { 0 }
Ihre hilfreich Link Antwort die meisten meiner Pascal-Probleme. Könnten Sie mir bitte noch eine Frage stellen? Für Interpreter, die nicht kompilieren, um im laufenden Betrieb zu arbeiten (JIT), arbeiten sie hinter der Szene, ähnlich wie mein Pseudocode? – MiP
Wenn Sie eine andere Frage haben, fragen Sie eine andere. Es hat ganze Bücher (mit vielen Seiten) darüber geschrieben, wie Dolmetscher (und/oder Compiler) arbeiten. Ich habe keine Ahnung, was du mit "ähnlich wie mein Pseudocode" meinst. –
Es ist die erste Frage zu diesem Thema, ich glaube nicht, dass ich ein neues Duplikat machen sollte. Was meinst du mit "C#"? – MiP