Gary12345 hat geschrieben:D.h. ein Zeiger ist ein Objekt, der die Speicheradresse mit Hilfe von @ ermittelt und dann den Wert der Variable speichert?
Nein ein Zeiger ist kein Objekt, er kann aber auf ein Objekt verweisen. Ein Zeiger ist eine Adresse, mit der man zu dem adressierten Speicherbereich gelangt.
Steht hier auch ganz schön:
Mit Zeiger (auch englisch pointer) wird in der Informatik ein spezieller Wert bezeichnet, dessen Bedeutung eine Speicheradresse ist. An dieser Adresse können entweder Daten, wie Variablen oder Objekte, aber auch Programmcode, stehen. Durch Dereferenzierung des Zeigers ist es möglich, auf die Daten oder den Code zuzugreifen.
http://de.wikipedia.org/wiki/Zeiger_%28Informatik%29
Mit dem @ wird hier nur die Adresse von i an den pointer p1 übergeben. Da wird nichts großartig ermittelt, es findet nur ein Kopiervorgang statt.
In Assembler sieht das dann so aus:
Das wars schon, mov ist ein einfacher Kopierbefehl.
Gary12345 hat geschrieben: Und dazu wird die Variable i auch noch um 1 erhöht? Warum das?
Das war hier sicher nur um den Umgang mit Pointern zu veranschaulichen, man hätte das ganze auch um 7 erhöhen können oder sonst was mit machen können.
Das ^ bedeutet hier, das eine Dereferenzierung von p1 statt findet, es wird dadurch auf den Speicherbereich zugegriffen, auf den der Zeiger p1 zeigt. So kann man den Integer Wert (in diesem Fall) ereichen und um 1 erhöhen (oder anderes damit machen).
Hoffentlich ist es jetzt etwas klarer.
Hier noch zwei Links zum Thema:
http://docwiki.embarcadero.com/RADStudi ... eigertypen
http://www.entwickler-ecke.de/topic_Poi ... 926,0.html
MfG