Anfängerfrage zu Funktionen



  • Ich hänge gerade fest bei diesem Thema und komme einfach nicht weiter ...

    Was ich über Funktionen weiß, ist wie sie definiert und deklariert werden und welchen Sinn sie haben. Ich habe desweiteren herausgefunden, wie man unter main() deklarierte Variablen in eine funktion() schiebt, sie dort berechnen läßt und das Ergebnis anschließend mittels return wieder an main() übergibt. Zumindest funktioniert das unten erstellte Beispiel:

    #include <iostream> 
    using namespace std;
    
    int meineFunktion(int x, int y) 
    { 
        int ergebnis;
        ergebnis = (x + y) * 3;
        return ergebnis; 
    } 
    
    int main() 
    { 
      int x = 6, y = 4; 
    
      cout << meineFunktion(x, y) << endl;
    
      return 0; 
    }
    

    Nun kann ich auf diese Weise zwar beliebig Variablen von main() an die funktion() übergeben, aber return liefert mir nur einen Wert zurück.

    Wie stelle ich es dagegen an, wenn ich mehrere Variablen zwischen Funktionen übergeben, bzw. tauschen will ? 😕



  • du übergibst die Variablen als Referenz oder du baust dir ein Struct und kannst dort mehere Variablen "zurückgeben".



  • Dann musst du dich mal mit Pointern und Referenzen beschäftigen. Meiner Meinung nach ist es am Besten wenn man zumindest für den Einstieg ein gutes Buch hat. 😉

    edit: zu spät.



  • Mit Referenzen habe ich es versucht, bin aber nicht weitergekommen, wie das untere Beispiel zeigt und als Buch habe ich "Einstieg in C++".

    #include <iostream> 
    using namespace std;
    
    int meineFunktion(int *zahl1)
    {
        int zahl2 = 3;
        *zahl1 + zahl2;
    }
    
    int main()
    {
        int zahl1 = 5;
        meineFunktion(&zahl1); 
    
        cout << meineFunktion(&zahl1) << endl;
       return 0; 
    }
    

    Könnte mir jemand vielleicht mit ein paar Zeilen Code zeigen, wie ich den Inhalt von 2 Variablen von main() nach function() verschiebe und aus function wieder zwei Werte nach main übergebe ? Also Rückgabewerte ohne return.



  • wenn du den Inhalt der Variabeln VOR der Funktion nicht mehr brauchst kannst du schreiben:

    void myFunk(int &var1, int &var2)
    {
    	//mach etwas mit den variabeln
    	var1+=3;
    	var2+=54;
    }
    
    int main()
    {
    	int par1=0, par2=3;
    	myFunk(par1,par2);
    	//jetzt stehen die neuen werte in par1 und par2
    }
    

    btw: du benutzt in deinem code keine referenzen sonder übergibst nur den Wert.
    nochmal nachlesen 😉

    edit: sorry habe mich verlesen. Du kannst es auch wie in deinem Beispiel mit Pointern machen auf die einzelnen variabeln. aber dann musst du sie trotzdem immer noch einzeln mit *var auslesen. mehrere sachen zurück geben geht wirklich nur mit Structs (beispiel folgt)



  • struct mystruct
    {
    	int nvar1;
    	int nvar2;
    };
    
    mystruct myFunk(int var1, int var2)
    {
    	var1+=3;
    	var2+=54;
    	mystruct ret;
    	ret.nvar1=var1;
    	ret.nvar2=var2;
    	return ret;
    }
    int main()
    {
    	mystruct info=myFunk(7,1);
    	cout<<info.nvar1<<endl;
    	cout<<info.nvar2<<endl;
    }
    


  • Danke für die Antworten. 🙂


Anmelden zum Antworten