Arbeiten mit Referenzen
-
Hallo,
kann mir jemand sagen, warum hier konstant 0 ausgegeben wird? Ich arbeite doch mit einer Referenz!
include <iostream> using namespace std; void foo(float& r) { r = r * r; } int main() { float r = 0; for (int i = 0; i < 10; i++) { cout << r << endl; foo(r); } return 0; }
-
0 * 0 = 0
-
Wieviel war 0 * 0 nochmal?
-
Ich habe aus i=0 i=1 gemacht.
Probiers mal damit:include <iostream> using namespace std; void foo(float& r) { r = r * r; } int main() { float r = 0; for (int i = 1; i < 10; i++) { cout << r << endl; foo(r); } return 0; }
-
Trotzdem bleibt der Wert von r immer 0.
-
Wozu überhaupt die Referenz?
-
Nun offenbar, weil Rückgabewerte in dem Lehrwerk noch nicht besprochen wurden.
-
0*0 = 0 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@ referenz
Ich glaub du hast 0 Plan was du da gerade machst. ^^
Was soll die for Schleife da bewirken? Willst du 9 mal die 0 sehen?^^
-
HeldDerMathematik schrieb:
Willst du 9 mal die 0 sehen?^^
Ich bezweifle, dass du der Held der Mathematik bist, wenn du nicht einmal 10-0 rechnen kannst.
@Decimad: Der Code würde auch mit call by value das gleiche machen.
Hier meine Lösung, 10 mal die 0 auszugeben (sogar *mit* Referenz):
std::fill_n(std::ostream_iterator<int>(std::cout, "\n"), 10, 0);
-
@ spielverderber
Oops hab nur auf den Code von: Astatos159 geschaut^^include <iostream> using namespace std; void foo(float& r) { r = r * r; } int main() { float r = 0; for (int i = 1; i < 10; i++) { cout << r << endl; foo(r); } return 0; }Und da wird nur bis 9 gezählt beim anderen natürlich bin 10 !
Und ich bin wohl der Held der Mathematik du Rotzlöffel !
-
Und ja, ich weiss, dass ich ein Spielverderber bin, wenn ich gleich die unschlagbare STL-Lösung poste.
-
HeldDerMathematik schrieb:
Und da wird nur bis 9 gezählt beim anderen natürlich bin 10 !
Ach echt? Ich dachte das Ende wäre bei beiden gleich.
-
Natürlich würde der Code in seiner derzeitigen Konstellation auch ohne Referenzen "das gleiche" machen. Aber der Autor hatte ja vermutlich etwas ganz anderes vor, sonst würde er sich ja nicht über die vielen Nullen wundern.