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


Anmelden zum Antworten