Sind zwei return möglich? wenn ja, wie?
-
hi leute..
hätte da nochmal eine frage also ich würde gerne eine funktion schreiben
die mir 2 werte ans hauptprogramm zurückgibt. bisher hab ich es allerdings so gemacht, dass ich eine variable im hauptprogramm extra dafür definiert habe,
nur um den funktionswert wiederzugeben
bsp.:int ergebnis;
ergebnis = funktion(wert);
printf("das ergebnis lautet: %d",ergebnis);
im falle dass 2 return sowieso nicht gehen hat sich das ja eh erledigt..aber wenn doch, wie soll ich dann im hauptprogramm mit der funktion 2 werte wiedergeben.. woher soll der compiler wissen welchen wert ich übergeben will?danke schonmal!
gruß
steffen
-
Mach das doch per Parameter!?
-
du kannst in einer funktion beliebig viele rückgabewerte einbauen,
int func() { return 0; return 1; return 2; }
aber es kann immer nur einer zurückgegebenwerden.
für mehrere werte nimmt man eine struktur oder zeiger, oder einen zeiger auf eine struktur, je nachdem.
gruß,
r.
-
Du kannst so etwas zB über eine Struktur lösen
#include <stdio.h> struct tuple { int first; double second; }; struct tuple foo() { struct tuple t = { .first = 10, .second = 3.14 }; return t; } int main() { struct tuple const t = foo(); printf("%d %f\n", t.first, t.second); }
-
okey dann heists jez wohl...hm...rtfm
dankeschön
-
hier ne möglichkeit über zeiger in der parameterliste:
void zwei_werte_returnier0r ( int* wert_nr_eins, int* wert_nr_zwo ) { // .. super duper calculation .. // ... more super duper calculation .. // ... done. *wert_nr_eins = 1; *wert_nr_zwo = 2; } int main() { int eins =0, zwo = 0; zwei_werte_returnier0r ( &eins, &zwo ); printf ("%d %d\n", eins, zwo ); return 0; }
mfg
-
danke sieht auf den erstenblick verständlich aus obwohl ich noch nie damit gearbeitet hab ( was nichts heißen soll
)
ich werds mal in ein paar programme einbauen!
danke!
gruß
steffen