Atari Logo
Atari Computer

Hauptseite -
Welches System? -
Hardware -
Software -
Emulatoren -
Internet
MausNet
Programmieren
Verweise
Über

C

Home Variable und Standarddatentypen Gültigkeitsbereich Anweisungen

6.9 Speicherklassen

Weiterhin kann man auch das Verhalten während der Laufzeit des Programms festlegen. Man spricht in diesem Zusammenhang von Speicherklassen. Da es vom Thema paßt, erkläre ich schon hier kurz, was es damit auf sich hat. Wir werden aber erst im Laufe des Kurses, wenn wir das Wissen einsetzen können, dieses Thema mit Leben füllen.

Um die Speicherklasse einer Variablen anzugeben, kann dem Datentyp das Schlüsselwort auto, static, register, const oder volatile vorangestellt werden:

#include <stdio.h>

int main
{
   static int i=10;
   printf("i = %d\n",i);
}

Alle bisherigen Variablen waren vom Typ auto. D.H. alle außerhalb von Funktionen deklarierte Variablen sind in allen Modulen eines Programms bekannt. Variable innerhalb einer Funktion existieren nur dann, wenn gerade diese Funktion ausgeführt wird. Wird dieser Variable in der Funktion ein Wert zugewiesen, so behält die Variable den Wert nicht bis zum nächsten Funktionsaufruf.

Eine static Variable außerhalb einer Funktion ist nur innerhalb dieses Moduls (Datei) bekannt. Eine static Variable innerhalb einer Funktion behält ihren Wert bis zum nächsten Funktionsaufruf bei.

Mit register kann dem Compiler mitgeteilt werden, daß diese Variable häufig benötigt wird und der Zugriff darauf optimiert werden sollte. Dies kann z.B. dadurch geschehen, daß die Variable in einem Register des Prozessors gespeichert wird. Es ist aber dem Compiler überlassen, was er daraus erzeugt.

Mit const zweigt man an, daß man den Wert dieser Variablen nicht mehr ändern möchte. Wir werden auch noch bei Funktionen darauf zurückkommen, wenn wir const Parameter übergeben.

Mit volatile weist man den Compiler darauf hin, daß der Wert dieser Variable von außerhalb verändert werden kann. Dies kann z.B. ein Register der Hardware in einem Computer sein. Der Sinn ist es, Optmierungen des Compiler zu vermeiden. Er könnte erkennen, daß man einen Wert schreibt und anschließend nur liest und dann den Wert direkt ohne Zugriff auf die Varibale verwenden. Wenn nun aber beabsichtigt ist, ein Register der Hardware auszulesen, würde man nur fehlerhaft Werte bekommen.


Home Variable und Standarddatentypen Gültigkeitsbereich Anweisungen


Best viewed with any browser English version not yet available.

Änderungen und Irrtümer vorbehalten. Letzte Änderung:
14 September 2001.
Home - Mail an den Webmaster - Impressum