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)
