-
19.03.2012, 21:56 #1Projektleitung
- Registriert seit
- 15.11.2011
- Beiträge
- 8.473
- Blog Entries
- 5
Thanked 9.519 Times in 3.334 Posts
[C++] Grundwissen II (Funktionen und Parameter)
Da demnächst mal wieder eine Arbeit ansteht, gibt's von mir mal wieder ein bisschen Bildung im Bereich C++ für Noobs

1. Funktionen
Funktionen setzt man meistens ein, um Codeausschnitte, die sich mehrfach wiederholen, zusammenzufassen, damit der selbe Code nicht 10x in einem Programm vorkommt => Wartungsaufwand und Fehleranfälligkeit wird verringert. Bei komplexeren Projekten nutzt man Funktionen im Zusammenhang in Klassen, um einzelne Komponenten besser zu gliedern und so das Projekt übersichtlich zu halten.
1.1 Allgemein
Eine Funktion ist wie folgt aufgebaut:
Zum Anfang steht der Datentyp, den der Rückgabewert der Funktion hat. (Zu Variablen und Datentypen siehe Teil I (Punkt 2))Code:void TuWas() { // Code }
Hier kann also Beispielsweise auch int oder float stehen.
void ist ein Sonderfall: void liefert einen leeren Rückgabewert, was keinem Rückgabewert entspricht.
Darauffolgend kommt der Name, dieser wird mit () beendet.
Zwischen den zwei geschweiften Klammern steht der Code, der die Funktion beinhaltet.
Ist der Datentyp nicht vom Typ void, liefert die Funktion einen Rückgabewert, d.H. ein Wert dieses Typs muss irgendwo in der Funktion mit return zurückgegeben werden:
Die Funtion Rechne ist vom Typ int, sie liefert also einen Integer zurück.PHP-Code:int Rechne()
{
int Summe = 2 + 2;
return Summe;
}
Wird die Funktion aufgerufen, rechnet sie 2+2 zusammen und liefert das Ergebnis zurück.
Verwendet wird die Funktion so:
Der Rückgabewert der Funktion Rechne wird in die Variable Ergebnis geschrieben und ausgegeben.PHP-Code:#include <iostream>
#include <conio>
using namespace std;
int Rechne()
{
int Summe = 2 + 2;
return Summe;
}
void main()
{
int Ergebnis = Rechne();
cout << "Das Ergebnis lautet: " << Ergebnis;
getch();
}
Funktionen vom Rückgabetyp void müssen natürlich auch so behandelt werden und dürfen natürlich nirgends wie eine Variable behandelt werden!
Das folgende Beispiel geht also gnadenlos schief:
Dasselbe gilt natürlich wenn versucht wird, den nicht vorhandenen Rückgabewert in eine Variable zu schreiben:PHP-Code:#include <iostream>
#include <conio>
using namespace std;
void TuWas()
{
// Code der Funktion
}
void main()
{
cout << TuWas();
getch();
}
Die Zurückgabe eines Wertes aus einer Funktion vom Typ void ist logischerweise ebenfalls nicht möglich, hier muss man der Funktion den entsprechenden Typ zuweisen, den man zurückgeben möchte (int, float, etc).PHP-Code:int i = TuWas();
Meiner Meinung nach ist das auch komplett sinnlos. Wenn man eine Funktion vom Typ void hat weiß man, dass sie keinen Rückgabewert liefert, und wo nichts ist kann auch nichts ausgegeben oder gespeichert werden.
Wollte ich nur mal gesagt haben, da den Fehler viele gemacht haben, wieso auch immer.
1.2 Parameter
Die Funktion Rechne aus dem obigen Beispiel macht effektiv natürlich wenig Sinn, man könnte in die Variable Ergebnis auch einfach die Summe aus 2+2 schreiben und hätte sich Arbeit gespart.
Dieses Beispiel soll auch nur das Funktionsprinzip zeigen. Sinnvoll wird das obige Beispiel erst, wenn Parameter mit ins Spiel kommen.
Parameter sind Variablen eines bestimmten Typs, die man einer Funktion beim aufruf übergeben kann. Die Parameter schreibt man in die () nach dem Funktionsnamen. Deklariert werden sie ähnlich wie normale Variablen:
Dieser Funktion werden beim Aufruf 2 Variablen vom Typ Integer übergeben. Die Funktion kann mit den Variablen machen was sie will.PHP-Code:int Rechne(int x, int y)
{
int Summe = x + y;
return Summe;
}
In dem Fall soll sie beide Zahlen addieren und das Ergebnis zurückliefern.
Das obige Beispielprogramm sieht so verändert wie folgt aus:
Die entscheidende Funktion ist hierbeiPHP-Code:#include <iostream>
#include <conio>
using namespace std;
int Rechne(int x, int y)
{
int Summe = x + y;
return Summe;
}
void main()
{
int Ergebnis = Rechne(2, 4);
cout << "Das Ergebnis lautet: " << Ergebnis;
getch();
}
2 ist in der Funktion Rechne der Integer x, 4 entspricht y.PHP-Code:int Ergebnis = Rechne(2, 4);
Die Funktion addiert also 2+4, sendet uns das Ergebnis zurück, und wir speichern es in der Variable Ergebnis.
Man muss beim Zurückgeben von Werten mittels return natürlich nicht zwingend eine Zwischenvariable angeben wie im Beispiel oben, man kann genau so gut auf die Zwischenvariable verzichten:
Würde ich in dem Fall auch so machen.PHP-Code:int Rechne(int x, int y)
{
return x + y;
}
Wollte ich nur mal erwähnt haben, da Programmierer meistens sehr faul sind und daher keine unnötigen Zwischenvariablen anlegen wenn man sich die Arbeit auch sparen kann
Sollte natürlich nur eingesetzt werden wenn es sinnvoll ist. Gibt die Funktion das Ergebnis einer 10m langen Rechnung zurück die 20 Variablen beinhaltet wären ein paar Zwischenvariablen wohl doch nicht so schlecht, damit nicht 1000 Fehler entstehen und in 2 Wochen noch überhaupt jemand kapiert, was die Funktion eigentlich tut.
-
The Following 2 Users Say Thank You to DMW007 For This Useful Post:
Ähnliche Themen
-
[C++] Grundwissen I (Variablen, Schleifen, Abfragen, etc)
Von DMW007 im Forum C++Antworten: 5Letzter Beitrag: 05.01.2017, 09:31 -
Emulator Funktionen ?
Von Bossover im Forum SupportAntworten: 1Letzter Beitrag: 18.04.2012, 17:05 -
Knuddels Funktionen
Von helfen im Forum Knuddels AllgemeinAntworten: 3Letzter Beitrag: 10.04.2012, 13:16 -
[C++] Temperaturconverter (Funktionen/Referenzparameter)
Von DMW007 im Forum C++Antworten: 0Letzter Beitrag: 20.03.2012, 17:05 -
Android Emulator Fehlermeldung invalid command-line parameter
Von Essah im Forum AndroidAntworten: 1Letzter Beitrag: 20.02.2012, 18:50
Stichworte
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.
Zitieren