Adress-Operator Turbo Pascal

aus Paswiki Turbo Pascal, der freien Wissensdatenbank

Der Adress-Operator @

Über den Adress-Operator @ kann die Adresse einer Variablen bestimmt und einem Zeiger zugeordnet werden.


@ ist ein unärer Operator. Für die Verwendung des Operators @ mit einer prozeduralen Variablen sind besondere Regeln zu beachten.

Der Typ dieses Wertes entspricht dem des Typs von nil und kann deshalb jeder beliebigen Zeiger-Variablen zugewiesen werden.

@ mit einer Variablen

Gegeben seien folgende Deklarationen:

 type
   TwoChar = array[0..1] of Char;
 var
   Int: Integer;
   TwoCharPtr: ^TwoChar;

Die folgende Anweisung weist nun dem Zeiger TwoCharPtr die Adresse der Variablen Int zu:

 TwoCharPtr := @Int;

Da TwoCharPtr^ als Zeiger auf ein Char-Array definiert wurde, läßt sich der Wert von Int ebenfalls als array[0..1] of Char interpretieren.

@ mit einem Wert-Parameter

Wenn @ auf einen formalen Wert-Parameter angewendet wird, resultiert ein Zeiger auf die Adresse innerhalb des Stacks, die den aktuellen Wert enthält.

Angenommen, Fred sei ein formaler Wert-Parameter in einer Prozedur und FredPtr sei eine Zeiger-Variable.

Wenn die Prozedur die folgende Anweisung ausführt

 FredPtr := @Fred;

bezieht sich FredPtr^ auf den Wert von Fred.

Allerdings bezieht sich FredPtr^ nicht auf den Parameter Fred selbst, sondern auf den durch Fred übergebenen Wert, der sich auf dem Stack befindet, also auf eine Kopie des Wertes.

@ mit einem Variablen-Parameter

Wird @ auf einen formalen Variablen-Parameter angewendet, ergibt sich ein Zeiger auf den aktuellen Parameter, dessen Adresse vom Stack gelesen wird.

Nehmen wir beispielsweise folgendes an:

  • One ist ein formaler Variablen-Parameter einer Prozedur,
  • Two ist eine Variable, die der Prozedur als aktueller Parameter von One übergeben wird,
  • OnePtr ist eine Zeiger-Variable.


Wenn die Prozedur folgende Anweisung ausführt:

 OnePtr := @One;

ist OnePtr ein Zeiger auf Two, und OnePtr^ bezieht sich direkt auf Two.

@ mit Prozeduren und Funktionen

Die Anwendung des Operators @ auf den Bezeichner einer Prozedur oder Funktion liefert die Startadresse der entsprechenden Routine zurück. Borland Pascal enthält keine weiteren Mechanismen zur Verwendung dieses Zeigerwertes.

Der einzige Zweck der Anwendung von @ auf Routinen besteht in der Übergabe von Adressen an Maschinensprache-Unterprogramme, d.h. inline-Anweisungen.

@ mit Methoden

Der Operator @ kann auf qualifizierte Methoden-Bezeichner angewandt werden, wenn der Einsprungpunkt der Methode ermittelt werden soll.

Mehr unter Operatoren

--JimWayne 18:11, 26. Feb 2006 (CET)

'Persönliche Werkzeuge
Extras