Lokale Variablen müssen immer am Anfang eines Blocks definiert werden.
Mit der Definition einer lokalen Variablens ist keine Initialisierung verbunden, für die Festlegung von Anfangswerten ist der Programmierer verantwortlich.
Eine lokale Variable wird innerhalb eines Blocks definiert und ist außerhalb nicht sichtbar.
main()
{
int i=4;
i++;
}
|
Mit der Ausführung eines Blockes wird eine Variable sichtbar, mit dem Ende eines Blockes geht sie verloren.
Lokale Variablen sind in verschachtelten Blöcken sichtbar, es sei denn, in einem inneren Block wird ein Wert mit gleichem Namen definiert .
main()
{
int i=4;
int j=10;
i++;
if (j > 0)
{
printf("i is %d\n",i); /* i defined in main can be seen */
}
if (j > 0)
{
int i=100; /* i is defined and so local to
* this block */
printf("i is %d\n",i);
} /* i (value 100) dies here */
printf("i is %d\n",i); /* i (value 5) is now visable. */
}
|
Variablen, die außerhalb von Funktioen definiert werden nennt man globale Variablen weil sie programmweit sichtbar sind. Globale Variablen werden im Gegensatz zu lokalen bei ihrer
Definition initialisiert| Datentyp | Initialisierung |
| int | 0 |
| char | '\0' |
| float | 0 |
| pointer | NULL |
In diesem Beispiel ist i eine globale Variable. Sie ist in main und allen anderen Funktionen, die noch hinzugefügt werden, sichtbar.
int i=4;
main()
{
i++;
}
|
Hier werden globale und lokale Variablen eingeführt.
int i=4; /* globale Definition */
main()
{
i++; /* globale Variable */
func
}
func()
{
int i=10; /* lokale Definition, globales 'i' wird verdeckt */
i++; /* lokale Variable */
}
|
i ist in main eine globale Variable und erhält durch 'i++' den Wert 5. i in func() ist eine lokale Variable und erhält den Wert 11. Wenn die Programmsteuerung zu main zurückkehrt, wird wieder die globale Variable sichtbar und die lokale Variable verschwindet..
Im Vergleich dazu sind Variablen vom Typ static in allen Funktionen des gleichen Quelltextfiles (nicht des gesamten Programmes!) sichtbar. Der Linker sieht diese Variablen nicht, kann sie also nicht mit anderen Objektfiles in Verbindung bringen.
Unter Speicherklassen werden weiter Möglichkeiten zur Variablendeklaration erklärt.