Beitragsseiten

Statische Variablen

Neben der globalen Variablen hat man noch eine weitere Möglichkeit Variablen über die Lebenszeit der erzeugenden Funktion am „leben“ zu halten und auf deren Wert mit anderen Funktionen zuzugreifen.
Dafür benötigt man das Schlüsselwort static. Dieses Schlüsselwort wird bei der Deklaration der Variablen innerhalb der Funktion vor dem Datentyp der Variablen geschrieben.
Bei der Deklaration der Variablen werden statische Variablen gleichzeitig auf 0 initialisiert.

1. Beispiel:

#include <stdio.h>

void funktion1()       // Funktion
{
  int zahl = 1;        // Deklaration der Variablen "zahl"

  printf("Wert von Zahl: %d\n",zahl); // Ausgabe der Variablen "zahl"
  zahl++;                             // Erhöhung des Variablenwerts um 1
}

void main()
{
  funktion1();         // Funktionsaufruf
  funktion1();         // Funktionsaufruf
  funktion1();         // Funktionsaufruf
}


Bildschirmausgabe:

Wert von Zahl: 1
Wert von Zahl: 1
Wert von Zahl: 1


Wenn Sie das Programm starten, wird dreimal der Wert 1 für die Variable zahl ausgegeben, obwohl man doch eigentlich davon ausgehen könnte, dass der Programmierer den Wert die Variable zahl mit jedem Funktionsaufruf Hochzählen wollte. Dies liegt wieder an der Labensdauer der Variablen, die mit der Lebenszeit der Funktion verknüpft ist.


2. Beispiel:

#include <stdio.h>

void funktion1()
{
  static int zahl = 1;

  printf("Wert von Zahl: %d\n",zahl);
  zahl++;
}

void main()
{
  funktion1();
  funktion1();
  funktion1();
}


Bildschirmausgabe:

Wert von Zahl: 1
Wert von Zahl: 2
Wert von Zahl: 3


Wenn man das Schlüsselwort static vor der Variablen-Deklaration schreibt, erreicht man das zu erwarten Verhalten des Programms, da jetzt die Variable über die Lebenszeit der erzeugenden Funktion weiter existiert.