Hallo,
Ich stell mir das eigentlich nicht so schwer vor…
Es wird doch im Prinzip nur auf eine Stelle im Speicher
„gezeigt“,aber wozu das ganze und wie vor allem?
genau so ist es. Und an dieser Stelle befindet sich etwas. Z.B. eine Variable, ein Record o.ä.
Den Zeiger kann man zu verschiedenen Dingen brauchen. Wenn du zB größere Records sortieren willst (also zB Records, die Adressen enthalten) so musst du normalerweise beim Sortieren häufig den Inhalt zweier Records miteinander vertauschen und brauchst dazu noch einen Hilfsrecord, der voübergehend den Inhalt des einen aufnimmt zB (vertauschen von rec[1] und rec[7])
temp.Name := rec[1].Name;
rec[1].Name := rec[7].Name;
rec[7].Name := temp.Name;
und das musst du dann noch für rec[].Strasse, rec[].HausNr etc. machen. Und das ganze ein paar hundert mal beim Sortieren.
wenn du statt dessen mit Pointern arbeitest, brauchst du nur die Pointer miteinander zu tauschen. Dh statt große Speicherbereiche hin- und her zu schaufeln eben nur ein paar Pointer. Das gibt ordentlich Performancegewinn.
Du kannst an Funktionen Pointer übergeben und die Funktion kann dann das Objekt, auf das der Pointer weist behandeln (Delphi macht das automatisch wenn du einen Parameter der Funktion als „var“ kennzeichnest). Das ist dann nötig, wenn du zB C-Bibliotheken einbindest.
Es gibt typisierte und untypisierte Pointer. Der erste kann nur auf bestimmte Typen von Variablen oder Objekte verweisen, der zweite auf beliebige.
typisiert:
var
pTypisiert = ^MeinRecordTyp; //kann nur auf den Typ "MeinRecordTyp weisen
pUntypisiert = Pointer;
Mit dem ersten verhinderst du, das irgendetwas durcheinandergebracht wird, was nicht passt.
Wenn du einem Pointer die Adresse einer Variable oder eines Objekts zuweisen willst geht das so:
MeinPointer := @MeinVariable;
(@ = „Adresse von“ bzw „Speicherposition von“) Damit verweist der Pointer „MeinPointer“ auf die Variable „MeinVariable“.
Aus einem Buch den Quellcode abschreiben ist langweilig.
Es ist aber nützlich, diese Codes sich mal anzuschauen und sich zu fragen, was der Gewinn bei der Benutzung der Pointer ist.
Gruss, Niels