Namespaces
Variants

Static storage duration

From cppreference.net

Ein Objekt, dessen Bezeichner ohne den Speicherklassen-Spezifizierer _Thread_local deklariert wird, und entweder mit externer oder interner Linkage oder mit dem Speicherklassen-Spezifizierer static , hat statische Speicherdauer. Seine Lebensdauer umfasst die gesamte Programmausführung und sein gespeicherter Wert wird nur einmal initialisiert, vor Programmstart.

Hinweise

Da sein gespeicherter Wert nur einmal initialisiert wird, kann ein Objekt mit statischer Speicherdauer die Aufrufe einer Funktion profilieren.

Die andere Verwendung des Schlüsselworts static ist Dateibereich .

Beispiel

#include <stdio.h>
void f (void)
{
    static int count = 0;   // static variable   
    int i = 0;              // automatic variable
    printf("%d %d\n", i++, count++);
}
int main(void)
{
    for (int ndx=0; ndx<10; ++ndx)
        f();
}

Ausgabe:

0 0
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8
0 9