Umgang mit Zeigern
-
Hallo,
ich verstehe den Umgang mit Zeigern noch nicht so ganz.
Ich habe hier den Ausschnitt aus einem Programmint* i = new int; *i=22; int z = *i; int &k=*i; cout<< k;Ich versuche zunächst mal zu erklähren was ich bisher verstanden habe.
int* i = new int;
legt einen Zeiger, der auf ein Objekt vom typ int zeigen kann, an und läst ihn auf das neue Objekt vom Typ int Zeigen*i=22;
der Wert 22 wird in das Objekt geschriebenint z = *i;
Der Wert von i wird an den Integer z zugewiesenint &k=*i; leider verstehe ich hier überhaupt nix mehr...
-
zu 3) Der Wert, auf den der Zeiger i zeigt, wird z zugewiesen
zu 4) Hier handelt es sich um eine Referenz, ein Kapitel, welches in C++ "neu" (gegenüber ANSI-C) ist. Wenn Du Referenzen bereits kennst, wird Dir genügen, dass k eine Referenz auf den Speicherbereich ist, auf den i zeigt. Wenn nicht, warte das Kapitel über Referenzen ab
(wobei das in C++ imho vor Zeigern gelehrt werden sollte)EDIT:
Hilfreich beim Verständnis ist vielleicht, dass & und * in C++ zwei Bedeutungen haben: Nach einem Typ (z.B. int) definiert es Referenz respektive Zeiger, vor einer Variable (abseits der Definition) meint es Adresse respektive Inhalt eines Zeigers.
-
& und * in C++, das ist ein großes Problem.
T* bedeutet Typ "Zeiger auf T" *pT bedeutet Inhalt von Zeiger pT T& bedeutet Referenz auf T &T bedeutet Adresse von T pT = new T; // erzeugt ein Objekt T auf dem Freispeicher // und liefert einen Zeiger pT zurück