C++ Funktionen mit Programmbeispielen

⚡ Intelligente Zusammenfassung

Funktionen in C++ Zusammengehörige Anweisungen werden in wiederverwendbare, benannte Blöcke gruppiert, die Eingaben entgegennehmen, verarbeiten und Ausgaben zurückgeben. Programme kombinieren integrierte Bibliotheksfunktionen mit benutzerdefinierten Funktionen, die jeweils deklariert, definiert und aufgerufen werden, um Code-Wiederholungen zu vermeiden.

  • 🧩 Was es ist: Eine Funktion gruppiert Anweisungen, die Parameter entgegennehmen, diese verarbeiten und einen Wert zurückgeben, und führt so eine gemeinsame Aufgabe von einem Block aus aus.
  • 📚 Integrierte Funktionen: Das C++ Die Standardbibliothek liefert fertige Funktionen wie sqrt(), die Sie direkt aufrufen können, ohne sie selbst schreiben zu müssen.
  • Benutzerdefinierte Funktionen: Programmierer erstellen ihre eigenen Funktionen, benennen sie eindeutig und rufen diesen Code von jeder beliebigen Stelle im Programm auf.
  • 📝 Erklärung und Definition: Ein Prototyp deklariert den Rückgabetyp, den Namen und die Argumenttypen; die Definition liefert den Funktionskörper.
  • 📞 Aufruf und Argumente: Beim Aufruf einer Funktion wird deren Rumpf ausgeführt; die Argumente müssen in Anzahl und Typ mit den Parametern übereinstimmen, Standardwerte sind zulässig.
  • 🤖 KI-Unterstützung: GitHub Copilot und ähnliche Assistenten unterstützen das Gerüst. C++ Funktionssignaturen, Funktionskörper und Funktionsaufrufe aus einem kurzen Kommentar.

C++ Funktionen

Was ist eine Funktion in C++?

Eine Funktion in C++ bezieht sich auf eine Gruppe von Anweisungen, die Eingaben entgegennehmen, verarbeiten und eine Ausgabe zurückgeben. Die Idee hinter einer Funktion besteht darin, häufige Aufgaben zu kombinieren, die wiederholt ausgeführt werden. Wenn Sie unterschiedliche Eingaben haben, schreiben Sie nicht erneut denselben Code. Sie rufen die Funktion einfach mit einem anderen Datensatz auf, den sogenannten Parametern.

. Der C++ Programm hat mindestens eine Funktion, die main()-Funktion. Sie können Ihren Code in verschiedene Funktionen aufteilen. Diese Aufteilung sollte so erfolgen, dass jede Funktion eine bestimmte Aufgabe erfüllt.

Es gibt viele integrierte Funktionen im C++ Standardbibliothek. Sie können diese Funktionen innerhalb Ihres Programms aufrufen.

Warum Funktionen verwenden?

Mit der Nutzung von Funktionen sind zahlreiche Vorteile verbunden. Diese beinhalten:

  • Jede Funktion fügt zugehörigen Code zusammen. Dadurch wird es für Programmierer einfacher, Code zu verstehen.
  • Funktionen erleichtern die Programmierung, indem sie Codewiederholungen eliminieren.
  • Funktionen erleichtern die Wiederverwendung von Code. Sie können dieselbe Funktion aufrufen, um eine Aufgabe in verschiedenen Abschnitten des Programms oder sogar außerhalb des Programms auszuführen.

Eingebaute Funktionen

In C++, Bibliotheksfunktionen sind integriert C++ Funktionen. Um diese Funktionen zu verwenden, rufen Sie sie einfach direkt auf. Sie müssen die Funktionen nicht selbst schreiben.

Beispiel 1:

#include <iostream>
#include <cmath>
using namespace std;
int main() {
	double num, squareRoot;
	cout << "Enter number: ";
	cin >> num;
	squareRoot = sqrt(num);
	cout << "The square root of " << num << " is: " << squareRoot;
	return 0;
}

Ausgang:

Ausgabe der C++ Beispiel für die eingebaute sqrt()-Funktion

Hier ist ein Screenshot des Codes:

C++ Code, der die eingebaute sqrt()-Funktion von cmath aufruft.

Code Erläuterung:

  1. Fügen Sie die iostream-Header-Datei in unser Programm ein, um deren Funktionen zu nutzen.
  2. Binden Sie die cmath-Bibliothek ein, um ihre Funktionen zu nutzen. Wir wollen die darin definierte Funktion sqrt() verwenden.
  3. Fügen Sie den std-Namespace in unseren Code ein, um seine Klassen zu verwenden, ohne ihn aufzurufen.
  4. Rufen Sie die Funktion main() auf. Die Programmlogik sollte im Hauptteil dieser Funktion hinzugefügt werden.
  5. Deklarieren Sie zwei Double-Variablen: Num und SquareRoot.
  6. Drucken Sie einen Text auf der Konsole. Der Text fordert den Benutzer auf, eine Zahl einzugeben.
  7. Lesen Sie Benutzereingaben von der Tastatur. Die Eingabe wird zum Wert der Variablen num.
  8. Rufen Sie die Bibliotheksfunktion sqrt() auf, die die Quadratwurzel einer Zahl berechnet. Wir haben der Funktion den Parameter num übergeben, was bedeutet, dass sie die Quadratwurzel von num berechnet. Diese Funktion ist in der cmath-Bibliothek definiert.
  9. Drucken Sie die vom Benutzer eingegebene Zahl, ihre Quadratwurzel und einen anderen Text auf der Konsole aus.
  10. Das Programm muss bei erfolgreichem Abschluss einen Wert zurückgeben.
  11. Ende des Hauptteils der main()-Funktion.

Benutzerdefinierte Funktionen

C++ ermöglicht es Programmierern, eigene Funktionen zu definieren. Der Zweck der Funktion besteht darin, zusammengehörigen Code zu gruppieren. Der Code erhält dann eine eindeutige Kennung, den Funktionsnamen.

Die Funktion kann von jedem anderen Teil des Programms aus aufgerufen/aufgerufen werden. Anschließend führt es den in seinem Hauptteil definierten Code aus.

Beispiel 2:

#include <iostream>
using namespace std;

void sayHello() {
	cout << "Hello!";
}

int main() {

	sayHello();

	return 0;
}

Ausgang:

Ausgabe der C++ benutzerdefinierte sayHello()-Funktion

Hier ist ein Screenshot des Codes:

C++ Code, der eine benutzerdefinierte Funktion definiert und aufruft

Code Erläuterung:

  1. Fügen Sie die iostream-Header-Datei in unser Programm ein, um deren Funktionen zu nutzen.
  2. Fügen Sie den std-Namespace in unseren Code ein, um seine Klassen zu verwenden, ohne ihn aufzurufen.
  3. Erstellen Sie eine benutzerdefinierte Funktion mit dem Namen sayHello().
  4. Geben Sie Text auf der Konsole aus, wenn die Funktion sayHello() aufgerufen wird.
  5. Ende des Hauptteils der Funktion sayHello().
  6. Rufen Sie die Funktion main() auf. Die Programmlogik sollte im Hauptteil dieser Funktion hinzugefügt werden.
  7. Rufen Sie die Funktion sayHello() auf.
  8. Das Programm muss bei erfolgreichem Abschluss einen Wert zurückgeben.
  9. Ende des Hauptteils der main()-Funktion.

Der Compiler muss eine Funktion kennen, bevor sie verwendet wird.

Funktionsdeklaration/Prototyp

Wenn Sie nach der Funktion main() eine benutzerdefinierte Funktion definieren, wird die C++ Compiler gibt einen Fehler zurück. Der Grund dafür ist, dass der Compiler die Details der benutzerdefinierten Funktion nicht kennt. Zu den Details gehören ihr Name, die Argumenttypen und ihre Rückgabetypen.

In C++, die Funktionsdeklaration/der Prototyp deklariert eine Funktion ohne Hauptteil. Dies gibt dem Compiler Details der benutzerdefinierten Funktion.

In die Deklaration/den Prototyp schließen wir den Rückgabetyp, den Funktionsnamen und die Argumenttypen ein. Die Namen der Argumente werden nicht hinzugefügt. Das Hinzufügen der Argumentnamen erzeugt jedoch keinen Fehler.

C++ Syntaxdiagramm für Funktionsdeklarationen/Prototypen

Funktionsdefinition

Der Zweck der Funktionsdeklaration besteht darin, dem C++ Compiler über den Funktionsnamen, den Rückgabetyp und die Parameter. Eine Funktionsdefinition informiert den C++ Compiler über den Funktionskörper.

C++ Funktionsdefinitionsstrukturdiagramm

Syntax

return_datatype function_name( parameters) {
   function body 
}

Aus dem Obigen geht hervor, dass eine Funktionsdefinition den Funktionskopf und -körper hat. Hier eine Erklärung der Parameter:

  • return_datatype – Einige Funktionen geben einen Wert zurück. Dieser Parameter legt den Datentyp des Rückgabewerts fest. Manche Funktionen geben keinen Wert zurück. In diesem Fall ist der Wert dieses Parameters void.
  • Funktionsname – Dies ist der Name der Funktion. Der Funktionsname und die Parameter bilden die Funktionssignatur.
  • Parameter – Dies sind Art, Reihenfolge und Anzahl der Funktionsparameter. Manche Funktionen haben keine Parameter.
  • Funktionskörper – das sind Anweisungen, die definieren, was die Funktion tun wird.

Funktionsaufruf

Damit eine Funktion die angegebene Aufgabe ausführen und eine Ausgabe zurückgeben kann, muss sie aufgerufen werden. Wenn Sie eine Funktion aufrufen, führt sie die in ihrem Hauptteil hinzugefügten Anweisungen aus.

Eine Funktion wird über ihren Namen aufgerufen. Falls die Funktion Parameter benötigt, müssen deren Werte beim Aufruf übergeben werden. Falls die Funktion keine Parameter benötigt, dürfen keine Werte übergeben werden.

C++ Syntaxdiagramm für Funktionsaufrufe

Übergeben von Argumenten

In C++, ein Argument/Parameter sind die Daten, die einer Funktion während ihres Aufrufs übergeben werden. Die Werte müssen mit ihren jeweiligen Variablen initialisiert werden.

Beim Aufruf einer Funktion muss die Anzahl der Argumente übereinstimmen. Das bedeutet, dass die übergebenen Werte der Anzahl der Parameter entsprechen müssen. Außerdem müssen die Werte auch vom Datentyp her mit den Parametern übereinstimmen. Ist der erste Parameter eine ganze Zahl, muss auch der übergebene Wert eine ganze Zahl sein.

Funktionsparametern können Standardwerte zugewiesen werden. Wird beim Funktionsaufruf kein Wert für den Parameter angegeben, wird der Standardwert verwendet.

Beispiel 3: So schreiben und rufen Sie eine Funktion auf

#include <iostream>
using namespace std;
int addFunc(int, int);
int main() {
	int x, y, sum;
	cout << "Enter two numbers: ";
	cin >> x >> y;
	sum = addFunc(x, y);
	cout <<"The sum of "<<x<< " and " <<y<<" is: "<<sum;
	return 0;
}
int addFunc(int num1, int num2) {
	int addFunc;
	addFunc = num1 + num2;
	return addFunc;
}

Ausgang:

Ausgabe der C++ Die Funktion addFunc() gibt eine Summe zurück

Hier ist ein Screenshot des Codes:

C++ Code, der Argumente an die Funktion addFunc() übergibt

Code Erläuterung:

  1. Fügen Sie die iostream-Header-Datei in unser Programm ein, um deren Funktionen zu nutzen.
  2. Fügen Sie den std-Namespace in unseren Code ein, um seine Klassen zu verwenden, ohne ihn aufzurufen.
  3. Deklarieren Sie eine Funktion namens addFunc(), die zwei ganzzahlige Parameter akzeptiert. Dadurch wird der Funktionsprototyp erstellt.
  4. Rufen Sie die Funktion main() auf. Die Programmlogik sollte im Hauptteil dieser Funktion hinzugefügt werden.
  5. Deklarieren Sie drei ganzzahlige Variablen, x, y und sum.
  6. Drucken Sie einen Text auf der Konsole. Der Text fordert den Benutzer auf, zwei Zahlen einzugeben.
  7. Lesen Sie die Benutzereingaben von der Tastatur. Der Benutzer sollte zwei Zahlen für die Variablen x und y eingeben, getrennt durch ein Leerzeichen.
  8. Rufen Sie die Funktion addFunc() auf und übergeben Sie ihr die Parameter x und y. Die Funktion verarbeitet diese Parameter und weist die Ausgabe der Variablen sum zu.
  9. Geben Sie die Werte der Variablen x, y und sum zusammen mit anderem Text auf der Konsole aus.
  10. Die Funktion muss nach erfolgreichem Abschluss einen Wert zurückgeben.
  11. Ende des Hauptteils der main()-Funktion.
  12. Funktionsdefinition. Wir definieren die Funktion addFunc(). Wir werden angeben, was die Funktion in ihrem Körper, dem {}, tun wird.
  13. Deklarieren einer Ganzzahlvariablen namens addFunc.
  14. Addieren der Werte der Parameter num1 und num2 und Zuweisen des Ergebnisses zur Variablen addFunc.
  15. Die Funktion addFunc() sollte den Wert der Variablen addFunc zurückgeben.
  16. Ende des Funktionskörpers, also der Funktionsdefinition.

Häufig gestellte Fragen

Bei einem Wertaufruf wird das Argument kopiert, sodass Änderungen innerhalb der Funktion das Original nicht beeinflussen. Bei einem Referenzaufruf wird die Variable mit einem kaufmännischen Und-Zeichen (&) übergeben, wodurch die Funktion den Wert des Aufrufers direkt ändern kann. C++ Standardmäßig erfolgt der Aufruf per Wert.

Durch Funktionsüberladung können mehrere Funktionen denselben Namen tragen, sich aber in Anzahl oder Typ ihrer Parameter unterscheiden. Der Compiler wählt die passende Version aus den übergebenen Argumenten aus, was die Lesbarkeit verwandter Operationen verbessert.

Eine Inline-Funktion weist den Compiler an, ihren Funktionskörper an jeder Aufrufstelle einzufügen, anstatt einen normalen Funktionsaufruf durchzuführen. Dies kann den Aufwand für sehr kleine Funktionen reduzieren, allerdings kann der Compiler diesen Hinweis ignorieren.

Eine rekursive Funktion ruft sich selbst auf und zerlegt so ein Problem in kleinere Teilprobleme. Sie benötigt einen Abbruchfall, der die Rekursion beendet; andernfalls wiederholen sich die Aufrufe endlos und führen zu einem Stack-Überlauf. Die Fakultät ist ein klassisches Beispiel dafür.

Sie übergeben den Parameter als Zeiger oder als Array definierter Größe und senden dessen Länge üblicherweise separat, da das Array zu einem Zeiger dekodiert wird. Siehe Übergabe Arrays in C++ Funktionen für vollständige Rechenbeispiele.

Eine Funktion gibt direkt einen Wert zurück, aber Sie können mehrere Werte mithilfe von Ausgabereferenzparametern, einer Struktur, einem `std::pair`, einem `std::tuple` oder einem `std::vector` zurückgeben. Strukturierte Bindungen entpacken dann das zurückgegebene Tupel an der Aufrufstelle.

Ja. KI-Codierungsassistenten wandeln einen Kommentar in einfacher Sprache in einen vollständigen Code um. C++ Die Funktion schlägt Signatur, Rumpf und Rückgabetyp vor. Außerdem werden lange Funktionen refaktoriert; die generierte Logik sollte jedoch überprüft werden.

GitHub-Copilot Autovervollständigungen C++ Es verarbeitet Funktionsdefinitionen, Prototypen und Aufrufe anhand Ihrer Kommentare oder Namen, schlägt Überladungen vor und entwirft Unit-Tests. Es verwendet referenzierte Header für den Kontext, aber jeder Vorschlag muss dennoch überprüft werden.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: