9.6 Lokale Variablen 

Die lokalste Variable ist immer die Variable im Anweisungsblock. Sehen Sie sich kurz ein Beispiel an:
/* lokal_var1.c */ #include <stdio.h> int main(void) { int i = 333; if(i == 333) { int i = 111; printf("%d\n",i); /* 111 */ } printf("%d\n",i); /* 333 */ return 0; }
Zunächst übergeben Sie am Anfang des Programms der Variablen i den Wert 333. In der if-Bedingung wird der Wert auf 333 überprüft. Anschließend wird erneut eine Variable i erstellt, der Sie jetzt den Wert 111 übergeben. Die Ausgabe im Anweisungsblock von if ist somit 111. Die Ausgabe außerhalb des Anweisungsblocks if ist aber wieder 333.
Aber ganz so einfach will ich es Ihnen nicht machen. Schreiben Sie das Programm nochmal neu:
/* lokal_var2.c */ #include <stdio.h> int main(void) { int i = 333; if(i == 333) { i = 111; printf("%d\n",i); /* 111 */ } printf("%d\n",i); /* 111 */ return 0; }
Sie haben hier im Gegensatz zum vorherigen Beispiel den Wert der Variablen i im if-Anweisungsblock auf 111 gesetzt, aber keine neue lokale Variable i definiert.
Merke |
Für lokale Variablen gilt Folgendes: Bei gleichnamigen Variablen ist immer die lokalste Variable gültig, also die, die dem Anweisungsblock am nächsten steht. |
Hier folgt nochmals ein Beispiel, das aber keine Schule machen sollte:
/* lokal_var3.c */ #include <stdio.h> int main(void) { int i=333; if(i == 333) { int i = 666; { i = 111; printf("%d\n",i); /* 111 */ } printf("%d\n",i); /* 111 */ } printf("%d\n",i); /* 333 */ return 0; }
Lokale Variablen, die in einem Anweisungsblock definiert wurden, sind außerhalb dieses Anweisungsblocks nicht gültig.
Funktionen sind im Prinzip nichts anderes als Anweisungsblöcke. Sehen Sie sich folgendes Beispiel an:
/* func4.c */ #include <stdio.h> void aendern(void) { int i = 111; printf("In der Funktion aendern: %d\n",i); } int main(void) { int i=333; printf("%d\n",i); aendern(); printf("%d\n",i); return 0; }
Hier gilt dasselbe wie schon im vorherigen Beispiel. Die neu definierte Variable i in der Funktion aendern() hat keinen Einfluss auf die gleichnamige Variable i in der main()-Funktion. Bringen Sie zum Beispiel die Funktion in die folgende Form:
void aendern(void) { i = 111; printf("In der Funktion aendern: %d\n",i); }
In diesem Fall würde sich das Programm nicht übersetzen lassen, da die Variable i noch nicht deklariert wurde. In einer Funktion müssen Sie eine Variable vor ihrer Verwendung zuerst deklarieren. Aber es gibt eine Möglichkeit, dem Compiler mitzuteilen, dass eine Variable für alle Funktionen gültig ist.
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.