11.11 Geltungsbereich von Variablen
 
Die Lebensdauer und der Geltungsbereich von Variablen hängen somit von zwei Punkten ab:
|
Von der Position der Deklaration einer Variablen |
|
Vom Speicherklassen-Spezifizierer, der vor einer Variablen steht |
Je nachdem, an welcher Stelle eine Variable in einer Quelldatei deklariert wurde, gibt es folgende Geltungsbereiche:
 Hier klicken, um das Bild zu Vergrößern
Abbildung 11.2
Geltungsbereiche von Variablen
|
Block (block scope): Wird eine Variable in einem Anweisungsblock ({}) deklariert, reichen Geltungsbereich und Lebensdauer dieser Variablen vom Anfang des Anweisungsblocks bis zu seinem Ende. |
|
Funktion (local scope): Wird eine Variable in einer Funktion deklariert, reichen Geltungsbereich und Lebensdauer vom Anfang des Funktionsblocks bis zu seinem Ende. Es sei denn, in der Funktion wird eine Variable innerhalb eines Blocks deklariert. Dann gilt diese Variable nur noch in diesem Block. |
|
Datei (file scope): Wird eine Variable außerhalb von Funktionen und Anweisungsblöcken deklariert, reichen Geltungsbereich und Lebensdauer vom Punkt der Deklaration bis zum Dateiende. |
Wie Sie im Abschnitt über lokale Variablen erfahren haben, gilt außerdem, dass wenn eine Variable mit demselben Namen in einem inneren Block deklariert wird, die äußere Deklaration nicht mehr sichtbar ist. Bei Verlassen des inneren Blocks ist die äußere Variable wieder sichtbar, und die innere Variable gibt es nicht mehr.
Der Geltungsbereich und die Lebensdauer von Variablen können noch auf eine andere Weise verändert werden, nämlich mithilfe des Speicherklassen-Spezifizierers. Hierzu eine Tabelle:
Tabelle 11.1
Lebensdauer und Geltungsbereich von Variablen mithilfe eines Speicherklassen-Spezifizierers
Position
|
Speicherklasse
|
Lebensdauer
|
Geltungsbereich
|
In einer Funktion
|
keine, auto, register
|
automatisch
|
Block
|
In einer Funktion
|
extern, static
|
statisch
|
Block
|
Außerhalb Funktion
|
keine, extern, static
|
statisch
|
Datei
|
|