Namespaces
Variants

Functions

From cppreference.net

Eine Funktion ist ein Konstrukt der C-Sprache, das einen zusammengesetzten Anweisungsblock (den Funktionsrumpf) mit einem Bezeichner (dem Funktionsnamen) verbindet. Jedes C-Programm beginnt die Ausführung mit der main-Funktion , die entweder beendet wird oder andere, benutzerdefinierte oder Bibliotheksfunktionen aufruft.

// Funktionsdefinition.
// Definiert eine Funktion mit dem Namen "sum" und mit dem Rumpf "{ return x+y; }"
int sum(int x, int y) 
{
    return x + y;
}

Eine Funktion wird durch eine Funktionsdeklaration oder eine Funktionsdefinition eingeführt.

Funktionen können null oder mehr Parameter akzeptieren, die aus den Argumenten eines Funktionsaufrufoperators initialisiert werden, und können mittels der return-Anweisung einen Wert an ihren Aufrufer zurückgeben.

int n = sum(1, 2); // Parameter x und y werden mit den Argumenten 1 und 2 initialisiert

Der Rumpf einer Funktion wird in einer Funktionsdefinition bereitgestellt. Jede nicht- inline (seit C99) Funktion, die in einem Ausdruck verwendet wird (sofern sie nicht unevaluated ist), muss genau einmal im Programm definiert sein.

Es gibt keine verschachtelten Funktionen (außer dort, wo sie durch nicht standardkonforme Compilererweiterungen erlaubt sind): Jede Funktionsdefinition muss auf Dateiebene erscheinen, und Funktionen haben keinen Zugriff auf die lokalen Variablen des Aufrufers:

int main(void) // die Hauptfunktionsdefinition
{
    int sum(int, int); // Funktionsdeklaration (kann in jedem Gültigkeitsbereich erscheinen)
    int x = 1;  // lokale Variable in main
    sum(1, 2); // Funktionsaufruf
//    int sum(int a, int b) // Fehler: keine geschachtelten Funktionen
//    {
//        return  a + b; 
//    }
}
int sum(int a, int b) // Funktionsdefinition
{
//    return x + a + b; // Fehler: main's x ist in sum nicht zugänglich
    return a + b;
}

Referenzen

  • C23-Standard (ISO/IEC 9899:2024):
  • 6.7.7.4 Function declarators (including prototypes) (S.: TBD)
  • 6.9.2 Function definitions (S.: TBD)
  • C17-Standard (ISO/IEC 9899:2018):
  • 6.7.6.3 Funktionsdeklaratoren (einschließlich Prototypen) (S: 96-98)
  • 6.9.1 Funktionsdefinitionen (S: 113-115)
  • C11-Standard (ISO/IEC 9899:2011):
  • 6.7.6.3 Function declarators (including prototypes) (S. 133-136)
  • 6.9.1 Function definitions (S. 156-158)
  • C99-Standard (ISO/IEC 9899:1999):
  • 6.7.5.3 Funktionsdeklaratoren (einschließlich Prototypen) (S: 118-121)
  • 6.9.1 Funktionsdefinitionen (S: 141-143)
  • C89/C90 Standard (ISO/IEC 9899:1990):
  • 3.5.4.3 Funktionsdeklaratoren (einschließlich Prototypen)
  • 3.7.1 Funktionsdefinitionen

Siehe auch

C++ Dokumentation für Deklaration von Funktionen