Funktionen
-
Ahhhh, ich glaub ich hab's verstanden (
)
Ich hab hier noch ne Frage:
Kann ich mehrere Return-Anweisungen ausführen, also z.B.:Funktion ??? { .... .... return a; return b; }
Geht das irgendwie in ähnlicher Weise???
Danke für die Erklärung...
Ciao,
euer zocker001
-
Nein, dass geht nicht.
Es gibt nur einen Rückgabewert, da du das Ergebnis einer Funktion, ja auch
nur einer Variable direkt zuweisen kannst.int ergebnis = funktion();
Du kannst aber trotzdem mehrere returns haben, von denen aber nur eines
ausgeführt wird. Beispiel:int a(int b) { if(b==5) return 1; else return 0; }
In diesem Beispiel gibt es zwar zwei returns, aber nur eines von beiden kann
ausgeführt werden.
-
Du meinst dass du mehrere Werte zurückgeben kannst ?
Also grundsätzlich kannst du soviele returns hintereinander schreiben wie du willst. Es wird aber immer nur das erste wirklich zu einem Rücksprung in die aufrufende Funktion führen. Die anderen werden nicht abgearbeitet.
Wenn du mehrere Wertr zurück geben willst hast du mehrere Möglichkeiten.
- Du gibst ein Array zurück
- Du gibst eine Struktur zurück
- Die verwendest als Parameter nonconst-referenzen für die Ergebnisse, und weist die Ergebnisse zu.
Hab ich irgendwas vergessen ?
Wenn es nur 2 Werte sein sollen eigenet sich wohl std::pair ganz gut, wenns mehr sind evtl. boost::tuple oder eben std::vector, std::list oder was auch immer.
-
OK, vielen Dank für den Tipp...
Und noch ne Frage:
Was sind eigendlich Default-Marken (ich hab nur mal etwas davon gehört, weis aber nich, was ich damit anstellen kann)???Ciao
zocker001
-
zocker001 schrieb:
Was sind eigendlich Default-Marken (ich hab nur mal etwas davon gehört, weis aber nich, was ich damit anstellen kann)???
Marke == Label?
Das ist der Zweig einer switch-Anweisung, der abgearbeitet wird, wenn keiner der case-Zweige zutrifft:
switch (a) { case 1: cout << "eins"; break; case 2: cout << "zwei"; break; default: cout << "weder eins noch zwei"; break; };
-
prolog:
Erstmal Danke für die Tipps, aber leider verstehe ich von Array's (das ist doch das mit den eckigen Klammern [], oder), Strukturen, Vektoren oder was auch immer überhaupt nichts. Ich lern gerade mal eigene Funktionen zu schreiben (das Beispiel ganz ganz oben mit der Funktion summe() war nur ne Übung).
Sorry, ich hoffe du bist mir nicht böse.
by
zocker001
-
Nö, warum sollte ich deswegen böse sein ???
Naja nun ists ja geklärt.
-
Bashar:
?!?!
??!: Ähm, ich glaub ich bring da irgendwas durcheinander. Ich meine in Bezug auf Funktionen. Gibt es da nicht irgendwelche Default-Marken oder sowas ähnliches???
-
zocker001 schrieb:
Bashar:
?!?!
??!: Ähm, ich glaub ich bring da irgendwas durcheinander. Ich meine in Bezug auf Funktionen. Gibt es da nicht irgendwelche Default-Marken oder sowas ähnliches???
Du meinst vielleicht Default-Werte?
Das wäre dann so:
int funktion(int a, int b=5) { [...] }
Jetzt kann man, muss man aber nicht(!), einen Wert für b angeben, wenn man die
Funktion aufruft. d.h., du kannst sowohlfunktion(eine_zahl)
als auch
funktion(eine_zahl, andere_zahl)
schreiben. Wenn du b nicht angibst wird automatisch b=5 gesetzt (s. oben)
-
Das sind dann Default-Argumente
-
EDIT: Zu spät, aber nur ca. 4,5 Stunden.