Funktionswertrückgabe???
-
Hallo!
Kann mir jemand von euch sagen, wie ich mir aus einer funktion zwei werte zurück geben lasssen kann bzw. diese zwei werte die ich mir aus der funktion zurück geben lasse im main() in zwei verschiedene variablen speichern kann!
Wäre toll wenn jemand von euch mir Helfen könnte will nämlich heute noch fertig werden
! Bin noch ein ziehmlicher n4b!
Vielen Danke!
Gruß Basti
-
std::pair.
oder einfach ein struct.
oder einfachint func (int a, int b, int *erg1, int *erg2) { if (erg1 && erg2) { *erg1=a+b; *erg2=a*b; }
pointer.
-
Ok,danke!
Aber wie kann ich die beiden Ergebnisse im main aufrufen/abrufen und in 2 Variablen speichern?
Gruß Basti
-
randa schrieb:
int func (int a, int b, int *erg1, int *erg2) { if (erg1 && erg2) { *erg1=a+b; *erg2=a*b; }
Schon mal was davon gehört, dass es in C++ Referenzen gibt. :p
-
groovemaster2002 schrieb:
randa schrieb:
int func (int a, int b, int *erg1, int *erg2) { if (erg1 && erg2) { *erg1=a+b; *erg2=a*b; }
Schon mal was davon gehört, dass es in C++ Referenzen gibt. :p
referenzen bringen bei den standardtypen sogut wie garnichts.
-
otze schrieb:
groovemaster2002 schrieb:
randa schrieb:
int func (int a, int b, int *erg1, int *erg2) { if (erg1 && erg2) { *erg1=a+b; *erg2=a*b; }
Schon mal was davon gehört, dass es in C++ Referenzen gibt. :p
referenzen bringen bei den standardtypen sogut wie garnichts.
Doch. Sie machen den Sourcecode leserlicher.
-
Andere möglichkeit, du gibst nen array zurueck:
int * test(int par1,int par2) { int rueck[2]; rueck[0]=par-par2; rueck[1]=par2*par1; return rueck; }
-
Greenberet schrieb:
Andere möglichkeit, du gibst nen array zurueck:
int * test(int par1,int par2) { int rueck[2]; rueck[0]=par-par2; rueck[1]=par2*par1; return rueck; }
Ne, das ist keine andere Möglichkeit. Nach dem return existiert dein Array nicht mehr...
-
otze schrieb:
referenzen bringen bei den standardtypen sogut wie garnichts.
Doch. Ua kannst dir den Test auf null sparen.
-
groovemaster2002 schrieb:
Doch. Ua kannst dir den Test auf null sparen.
Soweit hat er anscheinend nicht gedacht
-
Shlo schrieb:
Greenberet schrieb:
Andere möglichkeit, du gibst nen array zurueck:
[cpp]
int * test(int par1,int par2)
{
static int rueck[2];rueck[0]=par-par2;
rueck[1]=par2*par1;return rueck;
}
[/cpp]Nach dem return existiert dein Array nicht mehr...
doch mit static
-
Danke danke!
Ihr habt mir jetzt echt viele Tipps gegeben! Wie man was zurück gibt weiß ich jetzt aber ich weiß immer noch nicht wie ich die 2 zurückgegebenen Funktionswerte im main() wieder aufgreifen kann???Wenn ihr mir das noch sagen könntet wäre das fein!
Vielen Dank im Vorraus!
Gruß Basti
-
@ssm: Böse, du weißt schon, dass dies extreme und schwer findbare Fehler erzeugen kann - siehe ECP.
MfG SideWinder
-
SideWinder schrieb:
@ssm: Böse, du weißt schon, dass dies extreme und schwer findbare Fehler erzeugen kann - siehe ECP.
MfG SideWinder
1. zuerst gibt es keine Information, ob die Methode "thread safe" sein soll
2. deine Begründung?
-
void foo (int a [2], int b [2]; int x = foo(test(2,3) + test(2,4));
Ja hallo, wieso sind denn da plötzlich a und b gleich? Ja sowas, zeigen die Rückgabewerte von test()-Aufruf #1 und test()-Aufruf #2 auf das selbe Array? Was bilden sie sich eigentlich ein?
MfG SideWinder
-
ssm schrieb:
doch mit static
nix da, beim zweiten aufruf zeigt der vorher verwendete Zeiger auf das gleiche Array dann.
-
Hast du für diesen Text nun 6 Minuten benötigt?
MfG SideWinder
-
HILFE !!! schrieb:
aber ich weiß immer noch nicht wie ich die 2 zurückgegebenen Funktionswerte im main() wieder aufgreifen kann
Wo ist das Problem?
void foo(int& erg1, int& erg2) { erg1 = // irgendwas erg2 = // irgendwas } int main() { int a, b; foo(a, b); // a und b enthalten jetzt die Werte, die ihnen in foo zugewiesen wurden }
-
Auch schon wieder falsch verstanden!
Also sagen wir mal folgendes:
-------------------------
int test(int a, int b)
{
int z,i;.... programm code ... bla bla
return z,i;
}void main()
{
int h,k;// und wie jetzt weiter ??? wenn ich die Werte "z" und "i" aus der test
//Funktion haben will?h=test(Wert1,Wert2); // hab ich so den z-Wert??
k=test(Wert1,Wert2); // hab ich so den k-Wert? ???}
-----------------------------------Danke !
MFG
Basti
-
randa schrieb:
ssm schrieb:
doch mit static
nix da, beim zweiten aufruf zeigt der vorher verwendete Zeiger auf das gleiche Array dann.
na und?
-
SideWinder schrieb:
Hast du für diesen Text nun 6 Minuten benötigt?
MfG SideWinder
ich hab leider nicht so viel Zeit um diesen Text zu lesen. Könntest du mir kurz einen begründeten Grund sagen, wieso es nicht besonders gut ist, static variables in functions zu benutzen, wenn es nicht um "thread safe" geht?