Funktionen und Parameter
-
Juden Tach,
und zwar wollte ich fragen, ob mir jemand mal erklären kann, wozu Parameter in einer Funktion angegeben werden, was sie bewirken und was sie beeinflussen. Ich verstehe das im Moment echt garnicht. Ein Beispiel:
void func([b]int var[/b]);
Was hat der Parameter nun zu bedeuten? Hab ich einfach nur eine int-Variable deklariert? Und ich hab dann nochmal soein schönes Beispiel, wo ich echt Albträume von bekomme:
#include <iostream> using namespace std; int area(int l, int b); int main(void) { int var1, var2, ret; cout << "Bitte die Länge angeben: "; if( !(cin >> var1) ) { cerr << "Fehler bei der Eingabe!\n"; exit(1); } cout << "Bitte die Breite angeben: "; if( !(cin >> var2) ) { cerr << "Fehler bei der Eingabe!\n"; exit(1); } ret = area(var1, var2); cout << "Die Fläche beträgt " << ret << "\n"; return 0; } int area(int l, int b) { int flaeche; flaeche = l * b; return flaeche; }
Woher hat das Programm nun also die Werte für "int l" und "int b" ? Ich mein, ich hab ja nirgends geschrieben, dass var1 = l und var2 = b ist.
Ist echt verwirrend. Ich denke, es würde auch reichen, wenn ich wüsste, wozu Parameter da sind, dann könnte ich es mir zusammenreimen.
Danke für jede Hilfe,
bis denne
-
In Zeile 20 werden beide Eingaben an l und b übergeben und das Ergebnis (die Fläche) wird zurückgegeben.
Durch das Überladen, kannst Du Werte der Funktion zur Weiterverarbeitung übergeben.Sollte zum Beispiel
int area(int l, int b)
so aussehen...
int area()
ohne Parameter.
Könnte ich keine Werte zur Berechnung übergeben, müsste mir dann die Werte über eine globale Variable holen.
Das Ergebnis wird über return an ret übergeben und dann in der nächsten Zeile auf den Bildschirm ausgegeben.
-
Danke,
also dienen die Parameter also als Ersatz zu einer Globalen Variable? Außerdem hab ich in meinem Buch gelesen, dass man die Parameter auch ohne Namen schreiben kann, also wirdint area(int l, int b);
zu
int area(int, int);
Ähm hallo? Was ist das denn jetzt? Woher weiß der Compiler denn nun, was gemeint ist?
Aber so ganz verstanden, wozu Parameter wirklich da sind, hab ich noch nicht gerallt... Einfach nur um Werte zu speichern? Dafür kann ich auch Variablen oder Zeiger benutzen...
-
In der Tat, nur der Typ muss angegeben werden, der Name ist bei der Vereinbarung unwichtig.
Wie würdest Du den die Werte in die Funktion bekommen, ohne Parameterliste?
#include <iostream> using namespace std; int area(); int var1, var2;//Jetzt Global und nicht gut: int main(void) { int ret; cout << "Bitte die Länge angeben: "; if( !(cin >> var1) ) { cerr << "Fehler bei der Eingabe!\n"; exit(1); } cout << "Bitte die Breite angeben: "; if( !(cin >> var2) ) { cerr << "Fehler bei der Eingabe!\n"; exit(1); } ret = area(); cout << "Die Fläche beträgt " << ret << "\n"; return 0; } int area() { int flaeche; flaeche = var1 * var2; return flaeche; }
Datenkapselung: Ganz WICHTIG ! ! !
http://de.wikipedia.org/wiki/Datenkapselung_(Programmierung)