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?
-
@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.