Pointer: Erklärung bei Kurz-Aufgabe



  • Hallo liebes forum,

    ich bin relativ neu in c++ und versuche folgende kurze aufgabe zu verstehen.
    Mir ist vor allem der funktionsaufruf nicht klar was da passiert. Könnte mir
    jemand in worten erklären was da passiert?

    Ich versuche es natürlich auch mal selbst:
    - IN a und b werden double werte gespeichert
    - der double-pointer z wird angelegt und zeigt auf die adresse von a und somit kann man über
    dereferenzierung a verädern (Richtig?)
    - jetzt zeigt der pointer gleich wieder auf die adresse von b. Also kann b über z verändern werden.
    - jetzt legt man einen pointer auf pointer auf die adresse von z an. ppd kann also über doppelte dereferenizierung b verändern.
    - man dereferenziert ppd und übergibt an bar(). dort ?????? wird ein pointer angeleget der verändert werden kann? bzw. man kann doppelte pointer verändern?

    void bar(double *&pf)
    {
        *pf *= 2.0;
    }
    
    void foo()
    {
        double a = 3.5, b = 1.5;
        double *z = &a;
        z = &b;
        double **ppd = &z;
        bar(*ppd);    
    }
    


  • Bei bar(*ppd) wird vor der Übergabe ppd dereferenziert, es wird also im Grunde z übergeben oder eben &b. Die Übergabe erfolgt als Referenz, so daß sowohl z verändert werden kann als auch per Dereferenzierung b. Es wird in bar der Parameter pf (der ja eigentlich z ist) dereferenziert und verdoppelt, somit wird b verdoppelt.



  • danke ! 🙂


Anmelden zum Antworten