C Funktion

; ... ... und so weiter.main(), und alle einfachen Programme können weitere zusätzliche Funktionen definieren.

Sie können Ihren Code in verschiedene Funktionen aufteilen. Wie Sie den Code in verschiedene Funktionen aufteilen, bleibt Ihnen überlassen, aber logischerweise basiert die Aufteilung normalerweise darauf, dass jede Funktion eine bestimmte Aufgabe erfüllt.

FunktionDeklarationTeilt dem Compiler den Namen, den Rückgabetyp und die Parameter der Funktion mit. Eine FunktionDefinitionStellt den tatsächlichen Rumpf der Funktion bereit.

Die C-Standardbibliothek bietet eine große Anzahl integrierter Funktionen, die Programme aufrufen können. Beispielsweise wird die Funktionstrcat()verwendet, um zwei Zeichenketten zu verketten, und die Funktionmemcpy()wird verwendet, um Speicher an eine andere Stelle zu kopieren.

Funktionen haben viele andere Namen, wie Methoden, Unterprogramme oder Prozeduren und so weiter.

Funktion definieren

Die allgemeine Form einer Funktionsdefinition in C lautet wie folgt:

return_type function_name( parameter list )
{
   body of the function
}

In C besteht eine Funktion aus einem Funktionskopf und einem Funktionsrumpf. Nachfolgend finden Sie eine Liste aller Bestandteile einer Funktion:

  • Rückgabetyp:Eine Funktion kann einen Wert zurückgeben.return_typeIst der Datentyp des von der Funktion zurückgegebenen Werts. Einige Funktionen führen die gewünschten Operationen aus, ohne einen Wert zurückzugeben; in diesem Fall ist return_type das Schlüsselwortvoid。
  • Funktionsname:Dies ist der eigentliche Name der Funktion. Der Funktionsname und die Parameterliste bilden zusammen die Funktionssignatur.
  • Parameter:Parameter fungieren als Platzhalter. Wenn eine Funktion aufgerufen wird, übergibt man einen Wert an den Parameter, und dieser Wert wird als aktueller Parameter bezeichnet. Die Parameterliste umfasst Typ, Reihenfolge und Anzahl der Parameter der Funktion. Parameter sind optional; das heißt, eine Funktion kann keine Parameter enthalten.
  • Funktionskörper:Der Funktionskörper enthält eine Reihe von Anweisungen, die definieren, was die Funktion tut.

Beispiel

Das Folgende istmax()Der Quellcode der Funktion. Diese Funktion hat zwei Parameter, num1 und num2, und gibt die größere der beiden Zahlen zurück:

/*Die Funktion gibt die größere von zwei Zahlen zurück*/ int max(int num1, int num2) { /*Deklaration lokaler Variablen*/ int result; if (num1 > num2) { result = num1; } else { result = num2; } return result; }

Funktionsdeklaration

FunktionDeklarationTeilt dem Compiler den Funktionsnamen mit und wie die Funktion aufgerufen wird. Der eigentliche Funktionskörper kann separat definiert werden.

Eine Funktionsdeklaration besteht aus den folgenden Teilen:

return_type function_name( parameter list );

Für die oben definierte Funktion max() ist das Folgende die Funktionsdeklaration:

int max(int num1, int num2);

In einer Funktionsdeklaration sind die Parameternamen nicht wichtig; nur die Parametertypen sind erforderlich. Daher ist das Folgende ebenfalls eine gültige Deklaration:

int max(int, int);

Wenn Sie eine Funktion in einer Quelldatei definieren und sie in einer anderen Datei aufrufen, ist eine Funktionsdeklaration erforderlich. In diesem Fall sollten Sie die Funktion am Anfang der Datei deklarieren, die die Funktion aufruft.

Funktion aufrufen

Wenn Sie eine C-Funktion erstellen, definieren Sie, was die Funktion tut, und führen dann die definierte Aufgabe aus, indem Sie die Funktion aufrufen.

Wenn ein Programm eine Funktion aufruft, wird die Programmsteuerung an die aufgerufene Funktion übergeben. Die aufgerufene Funktion führt die definierte Aufgabe aus. Wenn die return-Anweisung der Funktion ausgeführt wird oder wenn die schließende geschweifte Klammer der Funktion erreicht wird, wird die Programmsteuerung an das Hauptprogramm zurückgegeben.

Beim Aufrufen einer Funktion übergeben Sie die erforderlichen Parameter, und wenn die Funktion einen Wert zurückgibt, können Sie den zurückgegebenen Wert speichern. Zum Beispiel:

Beispiel

#include <stdio.h> /*Funktionsdeklaration*/ int max(int num1, int num2); int main () { /*Definition einer lokalen Variablen*/ int a = 100; int b = 200; int ret; /*Rufen Sie die Funktion auf, um den Maximalwert zu erhalten*/ ret = max(a, b); printf( "Maximalwert ist : %d\n", ret ); return 0; } /*Die Funktion gibt die größere von zwei Zahlen zurück*/ int max(int num1, int num2) { /*Deklaration lokaler Variablen*/ int result; if (num1 > num2) result = num1; else result = num2; return result; }

Fügen Sie die max()-Funktion und die main()-Funktion zusammen, kompilieren Sie den Quellcode. Wenn die endgültige ausführbare Datei ausgeführt wird, werden die folgenden Ergebnisse erzeugt:

Max value is : 200

Funktionsparameter

Wenn die Funktion Parameter verwenden soll, müssen Sie Variablen deklarieren, die die Parameterwerte aufnehmen. Diese Variablen werden als dieformalen Parameter der Funktion bezeichnet。

Formale Parameter sind wie andere lokale Variablen innerhalb einer Funktion; sie werden beim Betreten der Funktion erzeugt und beim Verlassen der Funktion zerstört.

Beim Aufrufen einer Funktion gibt es zwei Möglichkeiten, Parameter an die Funktion zu übergeben:

AufruftypBeschreibung
WertübergabeDiese Methode kopiert die tatsächlichen Werte der Argumente in die formalen Parameter der Funktion. In diesem Fall wirkt sich das Ändern der formalen Parameter innerhalb der Funktion nicht auf die tatsächlichen Argumente aus.
Aufruf per ReferenzBei der Zeigerübergabe ist der formale Parameter ein Zeiger auf die Adresse des tatsächlichen Arguments. Wenn eine Operation auf das Ziel ausgeführt wird, auf das der formale Parameter zeigt, entspricht dies einer Operation auf dem tatsächlichen Argument selbst.

Standardmäßig verwendet CWertübergabe, um Parameter zu übergeben. Im Allgemeinen bedeutet dies, dass der Code innerhalb der Funktion die tatsächlichen Argumente, die zum Aufrufen der Funktion verwendet wurden, nicht ändern kann.

Weitere Erweiterungen