C-Programmierung

Statische Variablen

Variablenverdeckung | | Beispiel zu statischen Variablen

In manchen Fällen, kann es gewollt sein, dass das Funktionsverhalten nicht nur von den lokalen Parametern, sondern auch von einem Zustand, d.h. einer Zustandsvariable, abhängt.

Als Alternative zu einer globalen Variablen können zur Modellierung eines Zustands statische lokale Variablen verwendet werden. Sie werden mit dem Schlüsselwort static im Funktionsrumpf deklariert.

Im Unterschied zu gewöhnlichen lokalen Variablen ist der Inhalt der statischen Variablen dauerhaft. Sie behalten ihren Inhalt von Funktionsaufruf zu Funktionsaufruf und können daher einen Zustand speichern, sind aber von ausserhalb der Funktion nicht sichtbar.

Statische Variablen müssen in der Deklaration initialisiert werden. Diese Initialisierung erfolgt einmalig während des ersten Funktionsdurchlaufs. Bei allen weiteren Durchläufen bleibt der letzte Wert erhalten.

Im Gegensatz zu lokalen Variablen, gibt es für statische Variablen nur eine einzige Instanz für alle Funktionsaufrufe, genau wie für globale Variablen auch. Sie gehören daher nicht zur Speicherklasse der lokalen Variablen, sind aber dennoch nur lokal sichtbar.

Statische Variablen widersprechen dem Prinzip der funktionalen Programmierung, der Wirkungsbereich des Seiteneffektes ist aber auf den Funktionsrumpf beschränkt.

Beispiel zur Verwendung einer statischen Zustandsvariable als Zähler:

double average(double x)
{
   static double sum=0;
   static int n=0;
   return((sum+=x)/++n);
}


Variablenverdeckung | | Beispiel zu statischen Variablen

Options: