Programmiersprache Pascal

Adreßoperator

Der Adreßoperator ermittelt die Adresse seines Operanden.


Standard Pascal, Extended Pascal

Es ist kein Adreßoperator vorgesehen.

Bemerkung:
Der direkte Zugriff auf Adressen entspricht nicht den Gestaltungsgrundsätzen der Sprache Pascal.


XL Pascal

Ein Adreßoperator steht nicht zur Verfügung, es kann jedoch die Funktion Addr zur Adreßermittlung verwendet werden.


Turbo Pascal, Delphi

Es gibt einen unären Operator zur Adreßermittlung:

  @operand
operand kann der Bezeichner einer Variable, einer Prozedur oder einer Funktion sein.

Achtung:
Im "normalen" Pascal kann @ als Alternative zu ^ verwendet werden.

Zur Adreßermittlung kann auch die Funktion Addr verwendet werden.

Beispiel:

  PROGRAM adress;
  TYPE zk2 = PACKED ARRAY[1..2] OF CHAR;
  VAR p : ^zk2;
      i : INTEGER;            { belegt 2 Byte }
  BEGIN
    i := 42;
    p := @i;                  { ermittelt Adresse von i }
    p := Addr(i);             { ermittelt ebenfalls Adresse von i }
    Writeln(p^, ' ', i);      { liefert  "*  42" }
    p^ := 'ab';
    Writeln(p^, ' ', i);      { liefert  "ab 25185" }
  END.
Erläuterung:
Für die INTEGER-Variable i werden 2 Byte Speicherplatz reserviert.
Der Wert 42 wird entsprechend der auf PC's mit Intel-Prozessor üblichen "little endian" Byte-Anordnung abgelegt:
Byte 1 Byte 2
0010 1010 0000 0000 binär
2A 0 hexadezimal
42 0 dezimal
* als Zeichen
Es gilt 0 * 256 + 42 = 42

Nach der Zuweisung p^ := 'ab'; sieht der Inhalt des gleichen Speicherbereichs wie folgt aus:
Byte 1 Byte 2
1100 0001 1100 0010 binär
61 62 hexadezimal
97 98 dezimal
a b als Zeichen
Es gilt 98 * 256 + 97 = 25185

Bemerkung:
Der Adreßoperator eröfftnet in Turbo Pascal interessante, aber auch sehr gefährliche Möglichkeiten zur Manipulation von Hauptspeicherinhalten.

Siehe auch: Manipulation von Zeigern



P. Böhme, 21.08.1996