Statische Variablen

Nicht immer ist es erwünscht, daß der für lokale Variablen reservierte Speicherplatz wieder freigegeben wird. So würde die folgende Funktion immer wieder den Wert Eins ausgeben, wenn sie aufgerufen wird:

  void zaehler()
  {
    int n = 1;
    cout << "Dies ist Aufruf Nummer " << n++;
  }

Auch eine Abfrage, um die Zuweisung zu verhindern hilft dabei nicht, da n jedesmal neuen Speicherplatz zugewiesen bekommt und somit den alten Wert 'vergißt'. Abhilfe könnte eine globale Variable schaffen, aber bei einer globalen Variable weiß man zum einen nicht, ob der Name nicht anderweitig belegt ist und zum anderen kann man nicht sicher sein, daß diese nicht von anderen Programmteilen verändert wird.

Abhilfe schafft das Konzept der statischen Variablen. Eine statische Variable ist eine lokale Variable, die aber nur einmal Speicherplatz zugewiesen bekommt und diesen behält, solange die Funktion Gültigkeit behält, also i.d.R. solange das Programm läuft:

  void zaehler()
  {
    static int n = 1;  // Dies wird nur einmal ausgeführt, danach bleibt der Speicherplatz reserviert
    cout << "Dies ist Aufruf Nummer " << n++; // Hier wird dann mitgezählt
  }