9.8 Statische Variablen 

Bevor ich Ihnen die statischen Variablen erkläre, sollten Sie sich zunächst folgendes Programmbeispiel ansehen:
/* func7.c */ #include <stdio.h> void inkrement(void) { int i = 1; printf("Wert von i: %d\n",i); i++; } int main(void) { inkrement(); inkrement(); inkrement(); return 0; }
Wenn Sie das Programm ausführen, wird dreimal ausgegeben, dass der »Wert von i: 1« ist. Allerdings muss man doch hier davon ausgehen, dass der Programmierer andere Absichten hatte, da er doch den Wert der Variable i am Ende der Funktion inkrementiert. Dass dies nicht funktioniert, hat mit der Speicherverwaltung des Stacks zu tun. Mehr zu diesem Thema finden Sie in Abschnitt 9.20.1, »Exkurs: Stack«.
Jetzt können Sie bei diesem Programm vor die Variable das Schlüsselwort static schreiben. Ändern Sie also diese Funktion:
void inkrement(void) { static int i = 1; printf("Wert von i : %d\n",i); i++; }
Damit werden für die Variable i tatsächlich die Werte 1, 2 und 3 ausgegeben. Dies haben Sie dem Schlüsselwort static zu verdanken. Denn statische Variablen verlieren bei Beendigung ihres Bezugsrahmens (also bei Beendigung der Funktion) nicht ihren Wert, sondern behalten diesen bei. Dass dies gelingt, liegt daran, dass statische Variablen nicht im Stacksegment der CPU, sondern im Datensegment gespeichert werden. Aber Achtung: Statische Variablen müssen schon bei ihrer Deklaration initialisiert werden!
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.