Jedes C-Programm ist eine Sammlung von Funktionen. Erfahren Sie alles über diese nützlichen wiederverwendbaren Codeblöcke, von deren Definition bis hin zur Bedeutung von „void“.
Möglicherweise haben Sie die grundlegende C-Syntax anhand einfacher Beispiele behandelt und fragen sich nun, wie Sie größere, realitätsnahe Programme erstellen können. Zunächst möchten Sie Ihren Code mit einem Minimum an Wiederholungen in effiziente Teile gliedern. In C ist, wie in den meisten Sprachen, die Antwort auf Ihre Probleme die Funktion.
Das Erstellen und Verwenden von Funktionen in C ist unkompliziert und bringt viele Vorteile mit sich. Mithilfe von Funktionen können Sie komplexe Programme in kleinere Teile zerlegen. Sie ermöglichen die Wiederverwendbarkeit sowohl innerhalb Ihres ursprünglichen Programms als auch in verwandten Bibliotheken oder anderen separaten Programmen.
Zunächst müssen Sie sich mit Funktionsdeklarationen, Prototypen, Parametern und Rückgabeanweisungen vertraut machen.
Was sind Funktionen in C?
In der C-Programmierung, eine Funktion ist ein benannter Codeabschnitt, der etwas tut, wenn Sie ihn dazu auffordern. Dadurch bleibt Ihr Code organisiert und Sie können dieselbe Aktion mehrmals verwenden, ohne sie zu wiederholen.
Das einfachste Beispiel ist eines, das Sie bereits verwendet haben: die Funktion main(). Das Besondere an der Funktion main ist, dass sie als Haupteinstiegspunkt für jedes C-Programm fungiert. Sie können auch Bibliotheksfunktionen verwenden, die bereits von jemand anderem geschrieben wurden, oder Sie können Ihre eigenen benutzerdefinierten Funktionen schreiben.
Funktionen: Deklarieren, Definieren und Aufrufen
Diese drei Aspekte sind grundlegend für die Verwendung von Funktionen.
Funktionsdeklaration
Dies stellt Informationen über den Namen, den Rückgabetyp und die Parameter einer Funktion bereit und ermöglicht so deren Verwendung vor ihrer vollständigen Definition. Es wird auch als Funktionsprototyp bezeichnet. Es folgt dieser einfachen Syntax:
return_type function_name(parameters);
Wo:
- return_type ist der Datentyp des Werts, den die Funktion zurückgibt. Es kann sich um einen beliebigen gültigen C-Datentyp handeln Leere wenn die Funktion keinen Wert zurückgibt.
- Funktionsname ist der Name, den Sie der Funktion geben. Sie werden dies später verwenden, um die Funktion aufzurufen.
- Parameter ist eine Liste von Eingabeparametern, die die Funktion akzeptiert, sofern vorhanden. Jeder Parameter besteht aus einem Datentyp, gefolgt von einem durch Kommas getrennten Parameternamen.
Hier ist zum Beispiel eine einfache Funktionsdeklaration:
intadd(int a, int b);
Funktionsdefinition
Wenn Sie eine Funktion aufrufen, führt sie den in ihrer Definition angegebenen Code aus. Es enthält den Namen der Funktion, den Rückgabetyp, die Parameterliste und die Anweisungen, die ihr Verhalten definieren. Hier ist die Syntax:
return_type function_name(parameters){
// Function body - code that defines what the function does
// Return a value if applicable
return value;
}
Lassen Sie uns Teile der Syntax aufschlüsseln:
Funktionskörper: Dies ist der in geschweifte Klammern eingeschlossene Codeblock {}. Es enthält die Anweisungen, die definieren, was die Funktion tut, wenn sie aufgerufen wird.
Return-Anweisung: Wenn die Funktion einen anderen Rückgabetyp als hat Leere, Die zurückkehren Die Anweisung sendet einen Wert an den Aufrufer zurück. Dieser Wert sollte mit dem angegebenen Rückgabetyp übereinstimmen.
Hier ist ein einfaches Beispiel einer Funktionsdefinition:
intadd(int a, int b){
int sum = a + b;
return sum;
}
Funktionsaufruf
Genau wie beim Kochen haben Sie möglicherweise ein Rezept (Funktionsdefinition) und einige Zutaten (Argumente), müssen aber dennoch den Anweisungen folgen, um ein Ergebnis zu erhalten. Ein Funktionsaufruf führt die Funktion mit den angegebenen Argumenten aus; Hier ist die Syntax:
return_type result = function_name(arguments);
Argumente: Dies sind die Werte oder Ausdrücke, die Sie als Eingaben an die Funktion übergeben. Trennen Sie jedes Argument durch ein Komma. Anzahl, Reihenfolge und Datentypen der Argumente sollten mit der Parameterliste der Funktion übereinstimmen.
Ergebnis: Wenn die Funktion einen anderen Rückgabetyp als hat Leerekönnen Sie den zurückgegebenen Wert mithilfe einer Variablen des entsprechenden Datentyps erfassen.
Hier ist ein Beispiel für einen Funktionsaufruf:
#include
// Function prototype
intadd(int a, int b);intmain(){
int x = 5, y = 3;// Call the function and store the result in 'sum'
int sum = add(x, y);
printf("The sum of %d and %d is %d\n", x, y, sum);
return0;
}
// Function definition
intadd(int a, int b){
return a + b;
}
Indem Sie diese drei Schritte befolgen – die Funktion deklarieren, ihre Implementierung bereitstellen und sie aufrufen Mit geeigneten Argumenten können Sie Funktionen effektiv verwenden, um verschiedene Aufgaben in Ihrem System auszuführen Programm.
Funktionsparameter und Rückgabewerte
Parameter sind in der Deklaration oder Definition der Funktion deklarierte Variablen, die als Platzhalter für die Werte fungieren, die beim Aufruf an die Funktion übergeben werden. Sie ermöglichen es Ihnen, Daten an die Funktion zu übergeben, sodass diese mit diesen Daten arbeiten und sie bearbeiten kann. Rückgabewerte sind die Werte, die eine Funktion erzeugt und an den Aufrufer zurücksendet.
Es gibt zwei Methoden zur Übergabe von Parametern.
Wert übergeben
Bei diesem Ansatz kopiert ein Funktionsaufruf den Wert des tatsächlichen Arguments in den Parameter der Funktion. Änderungen am Parameter innerhalb der Funktion haben keinen Einfluss auf das ursprüngliche Argument.
Zum Beispiel:
#include
intsquare(int num){
num = num * num;
return num;
}intmain(){
int x = 5;
int y = square(x);// Output: x and y after function call: 5 25
printf("x and y after function call: %d %d\n", x, y);
return0;
}
- Die Quadratfunktion benötigt einen ganzzahligen Parameter, Num.
- Die Quadratfunktion berechnet das Quadrat von num, aktualisiert seinen Wert und gibt diesen neuen Wert zurück.
- Die Hauptfunktion deklariert eine Ganzzahlvariable, Xund weist ihm den Wert 5 zu.
- Anschließend ruft es die Quadratfunktion auf und übergibt ihr den Wert von x. Es weist das Ergebnis einer zweiten Variablen zu, j.
- Nach dem Funktionsaufruf gibt main die Werte von x und y aus. Der x-Wert bleibt gleich, da eine Änderung des Parameters „num“ innerhalb des Quadrats keinen Einfluss auf das ursprüngliche x hat.
Als Referenz übergeben
Bei diesem Ansatz übergeben Sie die Speicheradresse (Zeiger) eines Werts an eine Funktion. Änderungen am Parameter innerhalb der Funktion wirken sich auf den ursprünglichen Wert außerhalb der Funktion aus.
Zeiger, einschließlich ihrer Verwendung als Parameter, sind einer der Aspekte von C, die es von einer Sprache wie Python unterscheiden.
#include
voidsquare(int *num){
*num = *num * *num;
}intmain(){
int x = 5;
square(&x);
// Output: x after function call: 25
printf("x after function call: %d\n", x);
return0;
}
- Der Quadrat Die Funktion benötigt einen ganzzahligen Zeiger (int *) Parameter, Num. Es wird kein Wert zurückgegeben.
- Die Quadratfunktion berechnet das Quadrat des Wertes Num enthält und aktualisiert diesen Wert mithilfe des Zeiger-Dereferenzierungsoperators. *.
- Der hauptsächlich Funktion deklariert eine Ganzzahlvariable, Xund weist ihm den Wert zu 5.
- Es ruft dann das auf Quadrat Funktion mit einem Zeiger auf X unter Verwendung des Adressenoperators: &X.
- Nach dem Funktionsaufruf gibt main den Wert von aus X, Das ist jetzt 25 seit den Änderungen an *num im Inneren Quadrat Funktion wirkt sich auf das Original aus X.
Zusammenfassend besteht der Hauptunterschied zwischen den beiden Methoden darin, wie sich Änderungen am Parameter innerhalb der Funktion auf den ursprünglichen Wert außerhalb der Funktion auswirken. Die Wertübergabe erstellt eine Kopie, während die Referenzübergabe (Zeiger) die direkte Manipulation des Originalwerts ermöglicht.
Andere Sprachen haben oft ein Äquivalent zu den C-Zeigern, arbeiten aber im Allgemeinen auf einer höheren Ebene. Ein Beispiel ist C#s Unterstützung für Out-Variablen.
Leere Funktionen
Void-Funktionen in der C-Programmierung sind Funktionen, die keinen Wert zurückgeben. Verwenden Sie sie, um Aktionen oder Aufgaben auszuführen, ohne ein Ergebnis zu erzielen. Sie können ihre Parameter mithilfe der Referenzübergabe ändern, müssen dies aber nicht.
Hier ist ein Beispiel für eine void-Funktion:
#include
// Void function with no parameters
voidgreet(){
printf("Hello, MUO!");
}intmain(){
// Call the void function, output: "Hello, MUO!"
greet();
return0;
}
Void-Funktionen sind nützlich, um Aktionen auszuführen, Nachrichten zu drucken, Daten zu ändern oder Aufgaben auszuführen, ohne dass ein Rückgabewert erforderlich ist.
Entdecken Sie Funktionen in der C-Programmierung
Durch das Üben der Erstellung von Funktionen verbessern Sie Ihr Verständnis und die Anwendung der C-Programmierung. Darüber hinaus verbessert es die Lesbarkeit des Codes und erleichtert die Wartung. Tauchen Sie ein in verschiedene Anwendungsbereiche von Funktionen, um deren Vorteile auszuschöpfen.
Wenn Sie die Grundlagen von C-Funktionen beherrschen und sich selbst herausfordern möchten, sollten Sie sich mit der Rekursion befassen.