Frage zu Funktionen und Variablen



  • Hallo,
    ich bin noch Anfänger in C++ und versuche mich ein bisschen zurechtzufinden. Aktuell habe ich jedoch irgendwie eine Denkblokade.

    Zu meinem Problem:
    Ich habe eine Funktion die nach einer Rechnung eine Variable zurückgibt. Nun soll eine andere Funktion diese Variable mit dem eben berechneten Wert nehmen und weiter berechnen. Diese zweite Funktion soll diese Variable mit dem aktuellen Wert dann wieder zurückgeben, damit er ausgegeben werden kann oder nochmal verädendert werden kann etc.

    Wie kann ich eine Variable definieren damit sie in beiden Funktionen vorkommen kann und zu Beginn immer den gerade aktuellen Wert hat?

    Irgendwie stehe ich auf dem Schlauch.



  • Ich glaube dass deine Verwirrung unter anderem daraus entspringt dass du Variablen und Werte verwechselst.
    Eine Funktion gibt einen Wert zurück, nicht eine Variable.
    Daher kann auch eine 2. Funktion nicht "die Variable" von der 1. Funktion nehmen - sie kann bloss eine eigene Variable mit dem Wert initialisieren, den die 1. Funktion zurückgegeben hat.



  • Du hast Recht.

    Aber wie greife ich auf den Wert der Variablen zu.

    ich geb das Ergebnis der Funktion mit z.B. return x; zurück

    Jetzt soll die 2. Funktion zu dem Wert von x noch 5 hinzuzählen.



  • int ErsteFunktion()
    {
        int x = 10;
        return x; // Gibt den aktuellen Wert von x zurück, also hier 10
    }
    
    int ZweiteFunktion()
    {
        int x = ErsteFunktion(); // Da der Wert von ErsteFunktion() 10 ist, wird x mit 10 initialisiert.
        x = x + 5; // Hier zählen wir nochmal 5 dazu, x ist jetzt also 15
        return x; // Gibt den aktuellen Wert von x zurück, also hier 15
    }
    


  • return( ErsteFunktion() + 5 )
    

    wäre vielleicht einfacher.



  • Ich habe es über eine Zeigervariable gelöst. Trotzdem vielen Dank für die Hilfe



  • EOP schrieb:

    return( ErsteFunktion() + 5 )
    

    wäre vielleicht einfacher.

    int ZweiteFunktion() { return 15; // 10 + 5 }
    

    wäre vielleicht einfacher.

    ... aber Erklärbärwert und so ...



  • Sigson schrieb:

    Ich habe es über eine Zeigervariable gelöst. Trotzdem vielen Dank für die Hilfe

    Das hört sich nach einem Geniestreich an für so ein anspruchsvolles Problem. Zeig mal.



  • int ErsteFunktion()
    {
        int x = 10;
        return x; // Gibt den aktuellen Wert von x zurück, also hier 10
    }
    
    int ZweiteFunktion(int y)
    {
        y = y + 5;
        return y; //war mal x :-(
    }
    
    ... irgendwo anders im Code
    
        int x = ZweiteFunktion( ErsteFunktion() ); // Auruf von ZweiteFunktion mit dem Rückgabewert von ErsteFunktion
    //oder
        int d = ErsteFunktion() 
        int x = ZweiteFunktion(d);
    


  • DirkB schrieb:

    int ZweiteFunktion(int y)
    {
        y = y + 5;
        return x; 
    }
    

    Hahaha, gut gemacht DirkB.

    Ich war schon immer ein guter CodeKon­t­rol­leur. 😉



  • EOP schrieb:

    Ich war schon immer ein guter CodeKon­t­rol­leur. 😉

    Danke für den virtuellen Compilerlauf.

    Ich habs verbessert.


Log in to reply