Static storage duration
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