Funktionswertrückgabe???



  • 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



  • ssm schrieb:

    🙄 und? was hab ich falsh gemacht?

    Also erstens hast du falsch falsch geschrieben 😃 , zweitens - Singleton ist von Meyers? 😮 🤡



  • SideWinder schrieb:

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

    in diesem Fall - falsch, aber es gibt die anderen...



  • Du und der Shlo werdet mir immer suspekter...

    MfG SideWinder



  • ssm, du diskutierst anstatt einzusehen dass dein codebeispiel falsch war.



  • Shlo schrieb:

    Also erstens hast du falsch falsch geschrieben 😃

    es könnte sein, weil ich nur Deutsch lerne und meine Deutschkenntnisse unbedingt verbessert werden sollen. Dazu brauche ich die Zeit, wie jeder eine neue Sprache lernende Mensch. :p

    Shlo schrieb:

    zweitens - Singleton ist von Meyers? 😮 🤡

    sory, ich meinte "Scott Meyers approach to Singleton implementation".



  • SideWinder schrieb:

    Du und der Shlo werdet mir immer suspekter...

    MfG SideWinder

    Huh? 😕



  • randa schrieb:

    ssm, du diskutierst anstatt einzusehen dass dein codebeispiel falsch war.

    😡 randa, du diskutierst anstatt zu lesen, was "HILFE !" wollte.

    Ich zitiere:

    Kann mir jemand von euch sagen, wie ich mir aus einer funktion zwei werte zurück geben lassen kann bzw. diese zwei werte die ich mir aus der Funktion zurück geben lasse im main() in zwei verschiedene variablen speichern kann!

    bitte :

    int * test(int par1,int par2) 
    { 
    	static int rueck[2]; 
    
    	rueck[0] = par1 - par2; 
    	rueck[1] = par2 * par1; 
    
    	return rueck; 
    }
    
    int main()
    {
    	int *pi = test(5, 6);
    
    	int val1 = pi[0];
    	int val2 = pi[1];
    
    }
    

    Und jetzt sei bitte so nett, mir zu sagen, was ich nicht richtig verstanden habe? Machte ich das, was HILFE wollte? Ja, ich machte so, wie es HILFE fragte. Die andere Sache, dass ich nie so in meinen Programmen schreiben werde. Es gibt aber die Fälle, in denen solchen Funktionalität benötigt ist.



  • Das funktioniert aber wie gesagt nur in speziellen Fällen - drücke ich mich unverständlich aus?

    Eine Lösung die nur in einem von drei Fällen funktioniert ist keine Lösung!

    MfG SideWinder



  • SideWinder schrieb:

    Das funktioniert aber wie gesagt nur in speziellen Fällen - drücke ich mich unverständlich aus?

    ich sagte "ES GIBT DIE FÄLLE..."
    drücke ich mich unverständlich aus?



  • ssm schrieb:

    😡 randa, du diskutierst anstatt zu lesen, was "HILFE !" wollte.

    ich habe ihm die korrekte lösung gesagt, du die falsche. Somit brauchst du mir nicht zu erzählen wer hier diskutiert.

    ssm schrieb:

    Die andere Sache, dass ich nie so in meinen Programmen schreiben werde. Es gibt aber die Fälle, in denen solchen Funktionalität benötigt ist.

    Du gibst ihm auch noch ein codebeispiel, dass du nicht mal selbst implementieren würdest. 👎
    Deine Funktionalität ist, das du diese Funktion nur einmal im Programm aufrufen kannst weil sonst alle pointer auf das selbe zeigen und du alle früheren Werte verlierst. Das wiederrum, so schließe ich, ist nicht das was 'hilfe' wollte. Wer fragt denn bitteschön nach so einem quatsch?
    Wenn ich will das alle auf das selbe zeigen mache ich das so

    int *p1=p2=p3=p4;
    

    Das so implizit und verteckt in einer Funktion zu machen ist ganz schlecht.


Anmelden zum Antworten