PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gültigkeit lokaler Variablen bei Rückkehr aus Unterfunktion



Matzenerich
03.10.2008, 13:46
Hallo,

habe zur Gültigkeit einer lokalen Variable eine Verständnisfrage.

Es heißt ja, das lokale Variablen nur im Anweisungsblock gültig sind.

Beispiel:
void test (void)
{
unsigned int lokale_var=100;
}

Wie ist es aber, wenn man den Bereich durch Aufruf einer Unterfunktion verläßt und nach deren Abarbeitung in die Funktion zurückkehrt. Ist die lokale Variable dann immer noch gültig, d.h. hat sie den gleichen Wert, oder ist es dann Zufall, wie wenn man sie nicht initialisiert hat?

Beispiel:
void test (void)
{
unsigned int lokale_var=100;
unterfunktion(); // mache dies und das, dann kehre zurück
}

Danke für eure Antwort.

uwegw
03.10.2008, 13:50
Die Variable bleibt gültig im gesamten Block, der durch die geschweiften Klammern eingeschlossen ist. Also solange die test() nicht endgültig verlassen wurde. Der unterfunktion()-Aufruf ändert nichts daran.

askazo
03.10.2008, 13:52
Die Variable bleibt solange gültig, bis Du die Funktion endgültig verlässt.
Sie behält also auch während der Abarbeitung der Unterfunktion ihren Wert, ist allerdings in der Unterfunktion selber nicht bekannt.

Gruß,
askazo

Matzenerich
03.10.2008, 14:00
Vielen Dank (@askazo und @uwegw) für die schnellen Antworten!

Habe gerade in meinen Unterlagen (PIC 18f4550 etc.) etwas zum Softwares
tack gefunden.
Wenn ich das richtig verstanden habe, werden dort lokale Parameter bei einem Unterfunktionsaufruf abgelegt. Deshalb liegen sie dann dort solange, bis die Funktion bei meinem Beispiel test() komplett abgearbeitet wurde, richtig?