next up previous contents
Nächste Seite: Beispieldeklarationen Aufwärts: Variablen Vorherige Seite: Variablen   Inhalt

Deklaration, global, statisch und lokal

Die Deklaration von Variablen geht syntaktish immer nach demselben Schema vor sich: Attribute (optional), Typ, Name, Initialisierung(Optional),Semikolon. Z.B.:


static const unsigned int counter = 12;

static und const sind Attribute, unsigned int der Typ, counter der Name und =12 die Initialisierung.

Auf Variablen kann, je nach Attributen und Ort der Deklaration nur in bestimmten Teilen des Programms zugegriffen werden. Wird eine Variable zu Beginn eines von {} eingeschlossenem Block deklariert, z.B. am Anfang einer Funktion, so ist sie nur innerhalb dieses Blockes sichtbar. Solche Variablen heißen lokal. Andere Objekte und Funktionen können durchaus denselben Namen haben. Normalerweise werden solche Variablen automatisch erzeugt, wenn das Programm den Block erreicht und automatisch wieder entfernt, wenn der Block verlassen wird. Ist eine solche Variable nicht initialisiert oder hat nicht das Attribut static, so ist ihr Wert bei Betreten des Blockes undefiniert. Diese Variablen nennt man automatische Variablen. Hat sie hingegen das Attribut static, so behält sie ihren letzten zugewiesenen Wert, auch wenn der Block zwischenzeitlich verlassen wurde. Wird sie nicht explizit initialisiert, wird sie mit 0 vorbesetzt.

Wird eine Variable außerhalb jeden Blockes deklariert, kann auf sie von überall im Programm zugegriffen werden. Ihr Name muß daher Programmweit einmalig sein. Ist sie nicht explizit initialisiert, wird sie mit 0 vorbesetzt. Solche Variablen heißen globale Variablen. Man sollte globale Variablen nur selten einsetzen, da sie die Gesamtstruktur verunklaren können und zu subtilen Fehlern führen können.

Ein Zwischending sind globale Variablen mit dem Attribut static. Diese sind nur innerhalb des Moduls, in dessen Quelltext sie deklariert wird sichtbar. Auf solche Variablen kann nicht von anderen Moduln zugegriffen werden, es treten daer auch keine Namenskonflikte auf.

Enthält eine Variablendeklaration das Attribut extern, so weist das daraufhin, daß eine Variable des angegebenen Typs und Namens anderswo im Programm, etwa in einem anderen Modul, deklariert wird, welche dann gemeint ist.

Enthält eine Variablendeklaration das Attribut const, so muß diese Variable initialisiert werden, und darf dann nicht mehr verändert werden. (Variable ist dann vielleicht ein falscher Ausdruck). Ist sie Außerdem noch static deklariert, kann der Compiler sie komplett weglassen, wenn ihre Adresse nicht benötigt wird.

Bei der Auswahl des Namens für Variablen (wie auch für selbstgeschriebene Funktionen oder Typen) gibt es einige syntaktische Einschränkungen: Namen dürfen nur aus Groß- und Kleinbuchstaben, Ziffern und dem Unterstrich (_) bestehen, das erste Zeichen darf dabei keine Ziffer sein. Der sich so ergebende Name darf nicht mit einem reservierten Wort, also z.B. while,if,switch identisch sein. Durchaus möglich ist es aber, Namen von Standardfunktionen wie sin oder printf zu verwenden. Der Linker nimmt diese dann eben nicht aus der Standard-Library, sondern die selbstgeschriebene Funktion.


next up previous contents
Nächste Seite: Beispieldeklarationen Aufwärts: Variablen Vorherige Seite: Variablen   Inhalt
Thomas Neuhaus
2001-01-14