Anfänger-Frage zu Funktionen/Variablen



  • Hallo!

    Ich werde in einem Punkt aus meinem Buch nicht schlau.

    #include <iostream.h>
    
    [b]int Doubler(int AmountToDouble);[/b]
    
    int main()
    {
    
    	int result = 0;
    	int input;
    
    	cout << "Zu verdoppelnde Zahl zwischen 0 und 10000 eingeben: ";
    	cin >> input;
    
    	cout << "\nVor Aufruf von Doubler... ";
    	cout << "\nEingabe: " << input << " Verdoppelt: " << result << "\n";
    
    	result = [b]Doubler(input);[/b]
    
    	cout << "\nZurueck aus Doubler...\n";
    	cout << "\nEingabe: " << input << " Verdoppelt: " << result << "\n";
    
    	return 0;
    }
    
    [b]int Doubler(int original)[/b]
    {
    	if (original <= 10000)
    		return original * 2;
    	else
    		return -1;
    	cout << "Dieses Stelle wird nie erreicht!\n";
    }
    

    Ich verstehe nicht so ganz, dass die Funktion Doubler mit drei unterschiedlichen "Werten/Konstanten" definiert wird.

    Mein Haupt-Verständnis-Problem besteht hauptsächlich in den beiden Punkten:

    int Doubler(int AmountToDouble);
    int Doubler(int original)

    Warum wird Doubler hier mit "original" neu definiert?

    Wäre nett, wenn mir jemand kurz erklären könnte, was bei den einzelnen Definitionen/Initalisierungen passiert, oder mir einen passenden Link zur Thematik schreiben würde.

    Vielen Dank für Eure Mühen

    Markus



  • Hi,

    ist eigentlich ganz einfach:

    int Doubler(int AmountToDouble);
    

    ist der sog. Funktionsprototyp.
    Bedeutet:
    du sagst dem Compiler, dass irgendwo weiter unter eine Funktion kommt,
    die einen Integer zurückgibt, Doubler heisst und einen Integer als Parameter übernimmt. Der Ausdruck "AmountToDouble" ist hierbei optional und sagt nichts weiter aus, ist allerdings aus Lesbarkeitsgründen empfehlenswert.

    int Doubler(int original)
    {
    ...
    }
    

    ist die Implementierung der Funktion von oben.
    Die Namen, die hier für Parameter vergeben werden, sind dann auch verbindlich,
    wobei es egal ist, was für einen Namen du im Protoy vergeben hast.
    Hauptsache, der Datentyp stimmt.

    mfg
    Martin

    PS:
    Es is aber trotzdem doof, zwei verschiedene Namen zu vergeben
    (ausser es soll demonstriert werden, dass sich die Namen unterscheiden dürfen 😉



  • Danke für die schnelle Hilfe 😉



  • anonymus schrieb:

    int Doubler(int AmountToDouble);
    

    ist der sog. Funktionsprototyp.

    Minor Nitpick: Nicht ganz. Das ist die Funktionsdeklaration. Den Begriff Prototyp gibts in C++ nicht.


Anmelden zum Antworten