Motivation: In diesem Abschnitt soll der Zusammenhang zwischen Blockstruktur und Gültigkeitsbereich von Bezeichnern dargestellt werden. |
Externe Vereinbarungen werden häufig in privaten Headerfiles vorgenommen.
VERBATIM/b266: int x; /* externe Definition */ f() { /* Beginn Funktionsblock */ int x; ... { /* Beginn Block 1 */ float x; ... } /* Ende Block 1 */ ... } /* Ende Funktionsblock */
Die folgende Tabelle gibt einen Überblick über Speicherklasse, Gültigkeit und Lebensdauer von Variablen und Funktionen:
Für die Namen von Bezeichnern gibt es 3 voneinander unabhängige Klassen:
Speicher-
klasseGültigkeit Lebensdauer angebbar für Standard-
annahmenauto innerhalb des Blocks, in
dem Variable definiert istwährend Abarbeitung
des BlocksVariablen innerhalb
von Blöckenextern
Variableaußerhalb v. Funktionen:
vom Punkt der Definition
bzw. Deklaration bis zum
Ende des Quellfiles;
innerhalb v. Funktionen:
in dem Block, in dem die
Variable deklariert istwährend der gesamten
ProgrammausführungVariablen außerhalb v.
Funktionenextern
Funktionin allen zum Programm
gehörenden Quellfileswährend der gesamten
ProgrammausführungFunktionen falls nicht
staticstatic
Variableaußerhalb v. Funktionen:
vom Punkt der Definition
bis Ende des Quellfiles;
innerhalb v. Funktionen:
in dem Block, in dem die
Variable definiert istwährend der gesamten
ProgrammausführungVariablen keine static
Funktionnur in dem Quellfile, in
dem Funktion definiert istwährend der gesamten
ProgrammausführungFunktionen keine register innerhalb des Blocks, in
dem Variable definiert istwährend Abarbeitung
des BlocksVariablen und
Funktionsparam.
der Typen char,
short, int, long,
unsigned und
Zeiger auf bel.
Datenobjektekeine