Lokale Variablen
Werden Variablen innerhalb einer Funktion oder eines Anweisungsblock deklariert, so sind diese lokale Variablen. Lokale Variablen gehören immer zu der Funktion bzw. Anweisungsblock innerhalb der sie deklariert werden. Darum kann es einen Variablenname mehrmals geben, wenn sie in unterschiedlichen Funktionen / Anweisungsblöcken deklariert wurden. Wird die Variable aufgerufen, so wird jeweils die Variable aufgerufen, die am lokalsten (nächsten) deklariert wurde.
1. Beispiel:
#include <stdio.h>
void main()
{
int zahl = 10; // Lokale Variable der Funktion main()
if (zahl == 10) // Lokale Variable des if-Anweisungsblocks
{
int zahl = 20;
printf("1. printf(): %d\n", zahl); // Ausgabe der lokalen Variable von if
}
printf("2. printf(): %d\n",zahl); // Ausgabe der lokalen Variable von main()
}
Bildschimausgabe:
1.printf(): 20 2.printf(): 10 |
In dem Beispiel wurde am Anfang der Funktion main() die Variable zahl deklariert und mit dem Wert 10 initialisiert. Die folgende if-Alternative überprüft den Inhalt der Variablen zahl. Da die Bedingung wahr ist, wird innerhalb des if-Anweisungsblocks eine zweite lokale Variable zahl deklariert. Die printf()-Funktion innerhalb der if-Alternativen gibt den Inhalt der zweiten Variablen zahl aus, da diese innerhalb von if steht. Die zweite printf()-Anweisung gibt den Wert der ersten lokalen Variablen zahl aus.
2. Beispiel:
#include <stdio.h>
void main()
{
int zahl = 10;
if(zahl == 10)
{
zahl = 20;
printf("1. printf(): %d\n", zahl);
}
printf("2. printf(): %d\n", zahl);
}
Bildschirmausgabe:
1. printf(): 20 2. printf(): 20 |
Hier ist im Gegensatz zum vorherigen Beispiel der Wert der Variable zahl im if-Anweisungsblock auf 20 verändert worden, aber hier ist keine neue lokale Variable zahl definiert worden.
Der Gültigkeitsbereich einer lokalen Variablen erstreckt sich nur über den Bereich (Funktion / Anweisungsblock), innerhalb der sie deklariert wurde. Damit "sterben" diese Variablen auch, wenn die Funktion / der Anweisungsbock, in der sie erzeugt wurde, beendet wird.
3. Beispiel:
#include <stdio.h>
void main()
{
int zahl1 = 10;
if(zahl1 == 10)
{
int zahl2 = 20;
printf("1. printf(): %d\n",zahl2);
}
printf("2. printf(): %d\n",zahl2);
}
Dieses Programm wird nicht compiliert. In der Zeile printf("2. printf(): %d\n",zahl2); wird der Hinweis, das die Variable zahl2 unbekannt ist, ausgegeben. Das heißt, dass die Variable zahl2 zum Zeitpunkt der Ausführung des printf()-Befehls nicht mehr existiert.