Speicherklassen
← Ausdrücke und Evaluierung | ● | Parameterübergabe →
Typ | Deklaration | Syntax-Beispiel | Sichtbarkeit | Speicherort | Zweck |
---|---|---|---|---|---|
lokal | in Funktionsrumpf | {int x; …} | in Funktionsrumpf | Stack | temporäre Variable z.B. für Zwischenergebnisse zur Vermeidung von Seiteneffekten |
statisch | in Funktionsrumpf mit “static” | {static int x=0; …} | in Funktionsrumpf | Heap | Zustandsvariable mit begrenzter Sichtbarkeit |
global | außerhalb eines Funktionsrumpfes | int x=0; … | überall | Heap | globale Zustandsvariable = verboten |
modullokal | außerhalb eines Funktionsrumpfes mit “static” | static int x=0; … | in Modul | Heap | Modul-Zustandsvariable |
$\pi\cdot$Daumen-Regel: je lokaler, desto besser!
In Java gibt es hauptsächlich die beiden ersten Variablentypen “lokal” und “statisch” (die sog. Hauptspeicherklassen). In C / C++ gibt es zusätzlich noch globale und modullokale Variablen.
Weil es nun in C / C++ globale Variablen gibt, heißt das trotzdem nicht, dass es nun besonders sinnvoll wäre, diese ohne triftigen Grund zu verwenden. Für den normalen Anwendungsprogrammierer gibt es tatsächlich keinen einzigen Grund, wieso man globale Variablen bräuchte. Sie sind daher verboten!