11.8 Statische Variablen
 
Bevor ich Ihnen die statischen Variablen erklären werde, zunächst folgendes Programmbeispiel:
/* 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. Obwohl man doch hier davon ausgehen muss, 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 Stack zu tun. Zu diesem Thema in einem anderen Kapitel mehr.
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:
Achtung Statische Variablen müssen schon bei ihrer Deklaration initialisiert werden!
|
|