Zeiger (Pointers) - Frage
-
Hey Leute ,
vorweg ich bin seit ungefähr 3 Tagen hier im FOrum unterwegs und finde es Spitzenklasse , Great Job ..macht weiter so !
Nun habe ich mal eine Frage zu meinem Buch , dort wird folgendes Beispiel für das Löschen und erzeugen von Zeigern und die zuweißung von Heap-speicher gezeigt :
int main() { int localvariable =5; \\Locale Variable int * pLocal = &localVariable; \\Zeiger bekommt Adresse von Locale Variable int * pHeap = new int ; \\ integer wird im Heap besetzt *pHeap = 7 ; \\ wert zuweißung ... dann kommen ausgaben von den Zeigern und variablen delete pHeap; \\ Speicher freigeben pHeap = new int; \\ neuer Speicher im Heap *pHeap = 9 ; \\ Wert zuweißung delete pHeap; \\ Speicher freigeben return 0; }Nun meine Frage ist warum muss man bei : pHeap = new int; das pHeap nicht mit einem Indirektionsoperator schreiben ? kann man sich die Regel merken das wenn einem selben Zeiger das zweite mal Speicher zugesagt wird man kein Indirektionsoperator braucht ?
hoffe mir kann jemand helfen
MFg Toa
-
Beim ersten mal legst du pHeap als Zeiger auf einen int fest und reservierst den Speicher...
Beim zweiten mal ist der ja schon vorhanden...
-
Ach stimmt ja hier int * pHeap = new int ; erzeugt man ja den Zeiger und weißt gleichzeitig nen Wert zu deswegen das
aber *pHeap = 7 warum macht man da *pHeap ? .. man macht bei der Ausgabe doch *pHeap wenn man den Zugwießenen wert haben will und ausgabe pHeap wenn man die zugewießene Adresse will ist das da genauso ??
-
Versuch doch mal pHeap bzw *pHeap auszugeben...
und sieh dir an was dann auf deinem Bildschirm steht...
Dann siehst du dass das eine eine Adresse und das andere ein Wert ist
-
Alles klar danke dir
... bin dann ma weiter lesen ,..