Schau Dir die for-Schleife, die wir in Zeile 20 definieren, genau an. Diese Form der for-Schleife ist etwas klarer als jene von ANSI-C, da der Schleifenindex erst in der for-Schleife selbst definiert wird. Die Lebensspanne des Index hängt davon ab, wie neu (oder alt) Dein Compiler ist.
Hast Du einen etwas älteren Compiler, reicht die Lebensspanne des Index von der Definition bis zum Ende des umschließenden Blocks. In diesem Fall reicht sie dann bis Zeile 32, da die schließende geschwungene Klammer in Zeile 32 zu der letzten geöffneten geschwungenen Klammer vor der Definition der Variablen gehört. Da die Variable noch verfügbar ist, kann sie für eine weiter Schleife oder jeden anderen Zweck, für den eine Variable vom Typ int eingesetzt werden kann, verwendet werden.
Ist Dein Compiler aber relativ neu, endet die Lebensspanne des Index mit dem Ende der Schleife. In diesem Fall reicht sie also bis Zeile 25, wo die Schleife endet. Dies wurde erst vor kurzem vom Komitee, das die Standards festsetzt, eingeführt und ist nur bei den neuesten Compilern umgesetzt.
Egal wie alt Dein Compiler ist, die Variable mit dem Name Zaehler2 wird bei jedem Schleifendurchlauf definiert und initialisiert, da sie innerhalb des von der for-Schleife kontrollierten Blocks definiert wird. Ihre Lebensspanne erstreckt sich nur auf diese Schleife, das heißt die Zeilen 23 bis 25, sodaß der von ihr eingenommene Speicherplatz bei jedem Schleifendurchlauf automatisch freigegeben wird.
Dir wird aufgefallen sein, daß der Variablen Zaehler2 in Zeile 23 eine Zahl zugewiesen wird, bei der Ausgabe aber ein Buchstabe ausgegeben wird. Dies ist der Fall, weil C++ sehr bedacht darauf ist, den richtigen Ausgabetypen zu verwenden. Hast Du einen sehr alten Compiler, gibt er hier möglicherweise eine Zahl aus.
Schließlich wird in Zeile 27 die statische Variable Goofy definiert und automatisch mit 0 initialisiert, wie wir schon zuvor bemerkt haben. Ihre Lebensspanne reicht vom Punkt der Definition bis zum Ende des Blockes, in dem die Initialisierung geschieht, in diesem Fall Zeile 32.
Kompiliere das Programm und führe es aus.
Copyright © 1997, 1998, 2001-2006 Heinz Tschabitscher - Letzte Änderung 7. Dezember 2005
Heinz Tschabitscher - | Datenschutz | Impressum - Kommentare, Kritik, Anregungen, Kochrezepte?