Frage zum programmablauf



  • Guten tag,

    Ich habe hier ein programm bei der ich an einigen stellen die Ausgabe nicht so ganz nachvollziehen kann.

    Int i = 1;
    
    Void f(int* pi)
    {
     Int i= 42;
     *pi =0;
     Cout<< "f- der wert von i ist:"<< i<<endl;
    /*wieso wird hier  die 42 ausgegeben und nicht die 0? *pi zeigt doch zur adresse von i?
    */
    }
    
    Void g( int i)
    {
    Cout<< "g- der wert von i ist:"<< i<< endl;
    }
    
    Int main()
    {
    Cout<<" main- der wert von i ist:"<< i<< endl;
    g(4711);
    f(&i);
    Cout<< "main- der wert von i ist:"<<i<<endl;
    //wieso wird hier die 0 ausgegeben?
    Return 0;
    }
    

    Bitte um eine erklärung.

    Mfg



  • Bitte copy-und-paste, nicht abtippen! Sonst kommt sowas raus: https://ideone.com/4q0tPR



  • Wie viele i hast du?


  • Mod

    @manni: Wenn du dir einfach einen Account erstellen würdest, könntest du die Flüchtigkeitsfehler auch selber ausmerzen 🙂



  • Arcoth schrieb:

    @manni: Wenn du dir einfach einen Account erstellen würdest, könntest du die Flüchtigkeitsfehler auch selber ausmerzen 🙂

    Ja, aber ich habe schon zu viele Accounts und mir wurden schon zu oft meine Daten von unsicheren Severn entwendet.



  • Sam11 schrieb:

    Guten tag,

    Ich habe hier ein programm bei der ich an einigen stellen die Ausgabe nicht so ganz nachvollziehen kann.

    Int i = 1;
    
    Void f(int* pi)
    {
     Int i= 42;
     *pi =0;
     Cout<< "f- der wert von i ist:"<< i<<endl;
    /*wieso wird hier  die 42 ausgegeben und nicht die 0? *pi zeigt doch zur adresse von i?
    */
    }
    
    Void g( int i)
    {
    Cout<< "g- der wert von i ist:"<< i<< endl;
    }
    
    Int main()
    {
    Cout<<" main- der wert von i ist:"<< i<< endl;
    g(4711);
    f(&i);
    Cout<< "main- der wert von i ist:"<<i<<endl;
    //wieso wird hier die 0 ausgegeben?
    Return 0;
    }
    

    Bitte um eine erklärung.

    Mfg

    Um deine Frage zu beantworten:
    Das liegt daran, dass das "int i" in der Funktion f() die globale Variable i überdeckt. Es handelt sich um verschiedene Variablen in verschiedenen Adressen.


Anmelden zum Antworten