-         

Ergebnis 1 bis 4 von 4

Thema: Gültigkeit lokaler Variablen bei Rückkehr aus Unterfunktion

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    15.08.2008
    Alter
    40
    Beiträge
    19

    Gültigkeit lokaler Variablen bei Rückkehr aus Unterfunktion

    Anzeige

    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.

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    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.

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    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

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    15.08.2008
    Alter
    40
    Beiträge
    19
    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?

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •