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 ,..


Anmelden zum Antworten