Difference between revisions of "Pointer/de"

From Free Pascal wiki
Jump to navigationJump to search
Line 8: Line 8:
 
* Die genaue Größe des Zeigers ist abhängig vom Zielbetriebssystem und dem Zielprozessor.<br>
 
* Die genaue Größe des Zeigers ist abhängig vom Zielbetriebssystem und dem Zielprozessor.<br>
 
<br>
 
<br>
Es gibt zwei typen von Pointern typisierte und untypisierte.<br>
+
Es gibt zwei Typen von Pointern typisierte und untypisierte.<br>
 
Beispiel:
 
Beispiel:
 
<syntaxhighlight>
 
<syntaxhighlight>

Revision as of 17:47, 9 September 2012

Deutsch (de) English (en) suomi (fi) français (fr) русский (ru)


Eigenschaften eines Pointers (Zeigers):

  • Ein Pointer ist ein Zeiger (eine Referenz) auf eine Speicherstelle.
  • Ein Pointer ist ein ganzzahliger Datentyp zum speichern einer Arbeisspeicheradresse.
  • Ein Pointer verweist auf die Anfangsadresse einer Variablen oder eines Objektes.
  • Die Größe des Pointers liegt zwischen Longint oder Int64 .
  • Die genaue Größe des Zeigers ist abhängig vom Zielbetriebssystem und dem Zielprozessor.


Es gibt zwei Typen von Pointern typisierte und untypisierte.
Beispiel:

var
   p1: ^Integer;  // typisiert
   p2: Pointer;   // untypisiert


Beispiel für die Verwendung eines typisierten Pointers an einem einfachen Datentyp:

var
  a, b: Integer;  // a und b sind Integer-Variablen.
  p: ^Integer;    // p ist ein Pointer, der die Speicheradresse einer Variablen vom Datentyp Integer aufnehmen kann.
begin
  a := 500;       // Die Variable a vom Datentyp Integer erhält einen gültigen Wert zugewiesen.
  p := @a;        // Die Variable p vom Datentyp Pointer erhält jetzt die Adresse der Variablen a zugewiesen.
  b := p^;        // Die Variable b vom Datentyp Integer holt sich über die Adresse im Pointer p den Wert aus der Variablen a.
  p := nil;       // Die Variable p vom Datentyp Pointer enthält jetzt keine Adresse mehr (die Variable p zeigt auf nichts).
                  // Der Pointer p kann mit einer neuen Speicheradresse versehen werden.
end;


Beispiel für die Verwendung eines typisierten Pointers an einem Record:

type
   TNewRecord = record
      Wert1: ShortString;
      Wert2: ShortString;
      Wert3: ShortString;
   end;
var
   p: ^TNewRecord;
   i, j: integer;
begin
   New(p);                      // erstellt einen Pointer und ein Object vom Typ TNewRecord.
   p^.Wert1 := "Test";          // befüllt über den Pointer das Datenfeld des Objektes.
   p^.Wert2 := "TestTest";      // befüllt über den Pointer das Datenfeld des Objektes.
   p^.Wert3 := "TestTestTest";  // befüllt über den Pointer das Datenfeld des Objektes.
   Dispose(p);                  // Gibt den Pointer und damit das Objekt frei.
                                // Damit sind alle Datenfelder und Daten des Pointers p gelöscht.
end;



--Olaf 15:47, 9 September 2012 (UTC)