System.Pointer
Delphi
type Pointer = ^Pointer;
C++
typedef void* Pointer; //
Eigenschaften
Typ | Sichtbarkeit | Quelle | Unit | Übergeordnet |
---|---|---|---|---|
pointer typedef |
public | System.pas sysmac.h |
System | System |
Beschreibung
Adresse eines Bytes im Arbeitsspeicher.
Ein void-Zeiger repräsentiert die Adresse eines Bytes im Arbeitsspeicher. Solche Zeiger können nicht dereferenziert werden, weil ihnen keine Typinformationen zugeordnet sind. Ein void-Zeiger kann aber in einen typisierten Zeiger umgewandelt und anschließend dereferenziert werden.
Mit dem Spezifizierer register
deklarierte Variablen befinden sich nicht im Hauptadressraum und können nicht dereferenziert werden.
Abhängig vom Zeigerwert können Dereferenzierungsoperationen verschiedene Effekte haben:
Zeigerwert | Dereferenzierungseffekt |
Adresse von Daten | Erzeugt den Datenwert. |
Adresse einer Funktion/Prozedur | Erzeugt einen Aufruf einer Funktion/Prozedur. |
nil /NULL
|
Erzeugt einen Fehler oder eine Exception. Siehe EAccessViolation. |
invalid | Undefiniertes Ergebnis. Gibt einen Software-Fehler an. Siehe EInvalidPointer. |
Operatoren für die Zeigerreferenzierung/-dereferenzierung:
Delphi | C++ | |
Referenzierung | @object
|
&object
|
Dereferenzierung | object_pointer^
|
*object_pointer
|
Die Größe des Zeigers hängt vom Betriebssystem und/oder dem Prozessor ab. Auf 32-Bit-Plattformen wird ein Zeiger in 4 Byte als 32-Bit-Adresse gespeichert. Auf 64-Bit-Plattformen wird ein Zeiger in 8 Byte als 64-Bit-Adresse gespeichert.