Funktionswertrückgabe???



  • 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?



  • wie na und?

    int *schwachsinn (int a, int b, int c)
    {
    	static int ar[3];
    	ar[0]=a;
    	ar[1]=b;
    	ar[2]=c;
    	return ar;
    }
    
    int main ()
    {
    	int *a;
    	int *b;
    	a=schwachsinn (3, 2, 1);
    	b=schwachsinn (4, 3, 2);
    	cout << a[0] << a[1] << a[2] << endl;
    }
    

    Teste und sieh selbst.

    Edit: Wenn du unbedingt willst, das am ende alle Zeiger auf das selbe zeigen, ist das natürlich was anderes 🙄
    returne ein struct oder noch besser, platziere die ausgabe in der Parameterliste:

    void inordnung (int a, int b, int c, int *result, int sizeof_result)
    {
    	if (sizeof_result<3) return;
    	result[0]=a;
    	result[1]=b;
    	result[2]=c;
    }
    


  • randa schrieb:

    wie na und?

    int *schwachsinn (int a, int b, int c)
    {
    	static int ar[3];
    	ar[0]=a;
    	ar[1]=b;
    	ar[2]=c;
    	return ar;
    }
    
    int main ()
    {
    	int *a;
    	int *b;
    	a=schwachsinn (3, 2, 1);
    	b=schwachsinn (4, 3, 2);
    	cout << a[0] << a[1] << a[2] << endl;
    }
    

    Teste und sieh selbst.

    es ist keinen Schwachsinn, es ist das besondere Verhalten, das manchmal benutzt werden darf oder soll. 😉



  • ssm schrieb:

    es ist keinen Schwachsinn, es ist das besondere Verhalten, das manchmal benutzt werden darf oder soll. 😉

    Verhalten? Eher eine fehlende Logik...



  • Shlo schrieb:

    Verhalten? Eher eine fehlende Logik...

    *rofl* 😃



  • Shlo schrieb:

    ssm schrieb:

    es ist keinen Schwachsinn, es ist das besondere Verhalten, das manchmal benutzt werden darf oder soll. 😉

    Verhalten? Eher eine fehlende Logik...

    hast du was über Singleton von Mayers gehört? Das ist auch fehlende Logik?



  • ssm schrieb:

    hast du was über Singleton von Mayers gehört? Das ist auch fehlende Logik?

    Das hier hat nichts mit singleton zu tun.



  • randa schrieb:

    ssm schrieb:

    hast du was über Singleton von Mayers gehört? Das ist auch fehlende Logik?

    Das hier hat nichts mit singleton zu tun.

    und womit hat das hier zu tun?



  • HILFE! schrieb:

    Funktionswertrückgabe



  • randa schrieb:

    HILFE! schrieb:

    Funktionswertrückgabe

    🙄 und? was hab ich falsh gemacht?



  • damn?

    int* fill (int a, int b)
    {
        static int arr [2];
        arr[0] = a;
        arr[1] = b;
    }
    
    bool comp (int* a, int* b)
    {
        if(a[0]==b[0] && a[1]==b[1])
            return(true);
        return(false);
    }
    
    ...
    
    comp( fill(2,3) , fill(2,4) ); // Sollte ja wohl nach der Programmlogik false zurückgeben, gibt aber true zurück!
    

    Was gibts da großartig mehr zu erklären? Das ist nicht das gewünschte Verhalten, dass der Poster haben wollte -> falsch?!

    MfG SideWinder


Anmelden zum Antworten