Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Mehrer Rückgabewerte

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
13.09.2005, 12:59 Uhr
~Reinersonstkeiner
Gast


Hallo. Kann mir jemand sagen wie ich aus einer Funktion mehrere Werte zurückgeben kann?
Normal ist es ja nur einer also return irgendwas. Hab aber eine Größere Funktion gebastelt aus der ich jetzt 5 in der Funktion berechnete Werte ausgeben will.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.09.2005, 13:34 Uhr
Sadrior



Entweder in eine Struktur kapseln falls das Sinn ergibt und diese dann returnen.
Oder aber Oarameter als Referenz übergeben und diese dann in der Funktion ändern.
Mehrere Variablen kann man leider nicht returnen

Codeschnipsel

C++:
bool func(int &age, char* &name)
{
age = ...;
name = ...;
if(!...)
   return true;
return false;
}


Dieser Post wurde am 13.09.2005 um 13:35 Uhr von Sadrior editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
13.09.2005, 15:14 Uhr
Pablo
Supertux
(Operator)


Mehrere Werte zurückgeben, ist nicht möglich. Was man machen kann, ist ein struct erstellen (wie breits erwähnt), und das struct zurückgeben. Man kann aber auh ein Zeiger zurückliefern, da kann man auch (sollte man aber vorsichtg damit umgehen) auf ein Array zeigen, falls alle Werte, die man zurückgeben will, gleiche Typs sind.

Die dritte Möglichkeit wurde auch von Sadrior erwähnt, die Referenzen. Aber das geht nur in C++, C kennt keine Referenzen. Aber man kann Zeiger als Parameter bekommen und diese ändern, z.b.


C++:
void foo(int a, int b, int* summe, int* subtraktion, int* multiplikation)
{
    *summe = a + b;
    *subtraktion = a - b;
    *multiplikation = a * b;
}


void bar()
{
    int summe, subtraktion,multiplikation;

    foo(5,3, &summe, &subtraktion, &multiplikation);
}



Zwar werden keine Werte (von foo) zurückgegeben, aber die Werte werden geändert, und es ist, als hätte man mehrere Werte zurückbekommen.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: