Funktionen



  • Hallo Leute,

    Ich lerne momentan C++ mit dem Buch C++ für Spieleprogrammierer von Heiko Kalista.
    Nun bin ich immer sehr gut vorran gekommen, nur bin ich jetzt bei den Funktionen.
    Ansich versteh eich ja auch wie eine Funktion funktioniert.
    Aber bei den Parametern bin ich verwirrt.
    Also ich habe den Code:

    #include <iostream>
    
    using namespace std;
    
    int berechnePunkte (int Punkte, int Restzeit, int Zeitfaktor);
    
    int main ()
    {
    	int Gesamtpunkte = 0;
    	int Punkte = 0;
    	int Restzeit = 0;
    	int Zeitfaktor = 0;
    
    	cout << "Wie viele Punkte wurden bisher erreicht: ";
    	cin >> Punkte;
    
    	cout << "Restzeit in Sekunden: ";
    	cin >> Restzeit;
    
    	cout << "Punktebonus pro Sekunde: ";
    	cin >> Zeitfaktor;
    
    	Gesamtpunkte = berechnePunkte (Punkte, Restzeit, Zeitfaktor);
    
    	cout << "\nInsgesamt wurden " << Gesamtpunkte;
    	cout << " Punkte erreicht!" << endl;
    
    	return 0;
    }
    
    int berechnePunkte (int Punkte, int Restzeit, int Zeitfaktor)
    {
    	int Temp;
    
    	Temp = Punkte + Restzeit * Zeitfaktor;
    
    	return Temp;
    }
    

    Und nun verstehe ich nicht recht, wie das mit den Parametern hier funktioniert.
    Erstellt er fuer berechnePunkte eine lokale Variable Punkte Restzeit oder nimmt er sich aus main die variablen? Und wenn er sich die aus main nimmt, ist das dann immer so das die Funktionen so die Variablen immer aus main kriegen?
    Brauche dringend hilfe 😃



  • Nein, die Parameter werden kopiert. Wenn du der Variablen Punkte innerhalb der Funktion berechnePunkte einen neuen Wert zuweisen würdest, wäre der Wert der Variablen Punkte in der main Funktion unverändert.



  • Also erstellt er aus der main funktion ein abbild der variablen und diese sind dann 2 eigenstaendige?



  • Abbild, na ja, die Werte werden halt kopiert. (Hier wird das kopieren wahrscheinlich raus optimiert, aber das passiert nur dann, wenn das möglich ist, ohne die Semantik zu ändern.)
    Ansonsten bei sowas: Der Compiler kann dir solche Fragen gut beantworten. Einfach mal ein bisschen rum probieren und gucken welche Werte ausgegeben werden.



  • Alles klar danke fuer die hilfe!! Nun versteh ich das


Anmelden zum Antworten