Das Schlüsselwort static
bewirkt, daß eine Variable
während der gesamten Programmlebensdauer existiert. Diese Variablen
werden vom Compiler vor Programmbeginn meist auf dem heap-Speicher
angelegt und, sofern nicht anders angegeben, auf den Wert 0
initialisiert. Eine static
Variable innerhalb einer Funktion
hat daher den Inhalt 0, wenn die Funktion das erste Mal angesprungen
wird und behält zwischen Funktionsaufrufen den jeweils zuletzt
zugewiesenen Wert. Eine automatische Variable wird hingegen jedes Mal
neu angelegt und ggf. initialisiert. Die folgende Funktion zählt,
wie häufig sie aufgerufen wurde, und gibt diesen Wert zurück:
int f(){ static int count; // 0 at first function call return ++count; // increment before use as return value // (i.e. returns one on the first call) }