Funktion soll mehrere Werte "returnen"
-
Hi!
Wie funktioniert das, bis jetzt kenne ich nur return(zahl1) etc. aber nehmen wir folgendes an:
int main() { int zahl1=0, zahl2=0, zahl3=0; Fill_Numbers(); } int Fill_Numbers() { int wert1=1, wert2=2, wert3=3; }
Wie kann ich das so einrichten das wert1 in zahl1, wert2 in zahl2 usw "returned" wird?
-
Referenzparameter oder Zeiger. Mit return geht das nicht.
int main() { int zahl1=0, zahl2=0, zahl3=0; Fill_Numbers(&zahl1, &zahl2, &zahl3); } int Fill_Numbers(int *wert1, int *wert2, int *wert3) { *wert1=1; *wert2=2; *wert3=3; }
oder
int main() { int zahl1=0, zahl2=0, zahl3=0; Fill_Numbers(zahl1, zahl2, zahl3); } int Fill_Numbers(int &wert1, int &wert2, int &wert3) { wert1=1; wert2=2; wert3=3; }
Code-Hacker
-
Ok Danke!
-
Ok Danke!
-
Hi,
das macht man mit "call by reference". Du übergibst der Funktion Fill_Numbers() die Adressen der Variablen. Du kannst dann in der Funktion darauf zugreifen und brauchst gar nix mehr returnen. Schau mal in einem Buch oder Tut nach "call by reference", Referenzvariablen und Pointer, falls die dir noch nichts sagen.int main() { int zahl1 = 0; int zahl2 = 0; int zahl3 = 0; Fill_Numbers( zahl1, zahl2, zahl3); } int Fill_Numbers( int & wert1, int & wert2, int & wert3) { wert1 = 1; wert2 = 2; wert3 = 3; }
oder: ( aber schlechter )
int main() { int zahl1 = 0; int zahl2 = 0; int zahl3 = 0; Fill_Numbers( &zahl1, &zahl2, &zahl3); } int Fill_Numbers( int * wert1, int * wert2, int * wert3 ) { *wert1 = 1; *wert2 = 2; *wert3 = 3; }
Edit: Zu Spät...
-
Wobei in deinem Falle das zurückgeben eines vectors vieleicht sogar besser wäre.
z.B. so: ((ungetestet Ö_ö))
#include <vector> #include <iostream> using std::count, std::endl; std::vector<int> Fill_Numbers( void ) { std::vector<int> zahlen; zahlen.push_back(1); //zahl1 bzw zahlen[0] zahlen.push_back(2); //zahl2 bzw zahlen[1] zahlen.push_back(3); //zahl3 bzw zahlen[2] return zahlen; } int main() { std::vector<int> zahlen = Fill_Numbers(); cout << "Zahlen sind: "<<endl; for(int i = 0; i < zahlen.size(); i++)cout<<zahlen[i]<<endl; }
*edit* oops
-
Fill_Numbers( void ) Fill_Numbers( zahl1, zahl2, zahl3);
-
Man sollte sich immer vorher etwas umsehen:
http://www.c-plusplus.net/forum/viewtopic.php?t=60683
ist sogar noch auf der selben seite