Variablen

Variablennamen

Variablennamen sowie die Namen von symbolischen Konstanten und auch von Funktionen unterliegen gewissen Richtlinien:

Definition von Variablen

Jede Variable muss vor deren ersten Verwendung im Programm definiert werden.

Mit der Definition wird vom Compiler ein Speicherbereich für die Variable in der vom Datentyp verlangten Grösse reserviert.

Die Definition von Variablen besteht aus der Angabe des Datentypen und einer Liste von Variablennamen, die mit einem Strichpunkt abgeschlossen ist. Die einzelnen Werte in der Liste werden durch Kommas getrennt.

Beispiele:

int        i;

long      lower, upper;

double  sigma, alpha, delta;

Gültigkeitsbereich bzw. Sichtbarkeit von Variablen

Wir unterscheiden bezüglich dem Gültigkeitsbereich zwischen lokalen und globalen Variablen.

Jeder einzelne Block, welcher durch geschweifte Klammern begrenzt ist, kann eigene lokale Variablen haben, die jedoch immer ganz am Anfang des Blocks definiert werden müssen, also vor der ersten Anweisung.

Lokale Variablen sind nur innerhalb des Blocks, in dem sie definiert sind, bekannt. Auf globale Variablen, die ausserhalb einer Funktion definiert werden, kann in jeder Funktion innerhalb der gleichen Quelltextdatei zugegriffen werden. Soll auf eine globale Variable auch in einer anderen Quelldatei zugegriffen werden, so muss die Variable in eben jener Quelldatei mit dem anführenden Schlüsselwort extern deklariert werden. Beachten Sie dazu bitte folgende Darstellung:

QUELLE1.C

QUELLE2.C

 

int glob_status;

 

int function_1 (void);

 

main ()

{

 

            ...

            ...

            ...

}

 

 

int function_1 ()

{

            ...

            glob_status = 1;

            ...

}

 

extern int glob_status;

 

static int base;

 

int function_2 (void);

 

int function_2 ()

{

 

            ...

            ...

            glob_status = 0;

            ...

            ...

            ...

}

Mit dem Schlüsselwort static kann eine globale Variable vor anderen Quelltextdateien versteckt werden. Im obigen Beispiel ist die Variable base in der Datei QUELLE1.C nicht sichtbar, auch wenn sie dort als extern int base deklariert würde.

Bei Namensgleichheit von lokalen und globalen Variablen hat immer die Variable, deren Deklaration im innersten Block definiert ist, Gültigkeit.

Lebensdauer von Variablen

Globale Variablen behalten ihren Wert während der ganzen Programmlaufzeit und werden vom Compiler zu Programmbeginn auf 0 initialisiert.
Das ist so, weil globale Variablen auf dem Programmheap abgelegt werden, und dieser ist fest zugewiesen.

Lokale Variablen verlieren ihren Wert zu dem Zeitpunkt, in dem der Block bzw. die Funktion verlassen wird, in dem (der) die Variable deklariert wurde. Ihr Wert ist beim Eintritt in den Block unbestimmt (Müll).
Das ist so, weil lokale Variablen auf dem Stack abgelegt werden.

Werden lokale Variablen mit dem Schlüsselwort static deklariert, so behalten sie ihren Wert auch nach Verlassen des Blocks, in dem sie deklariert wurden, bei.
Und das ist so, weil lokale Variablen, welche als static definiert sind, ebenfalls auf dem Heap abgelegt werden.