static Variablen

static Variablen haben einen anderen Gültigkeitsbereich als 'normale' Variablen. Eine static Variable in einer Funktion hört nicht zu existieren auf, wenn die Funktion beendet wird, sondern bleibt im Speicher bestehen. Wichtig ist, dass der gleiche Sichtbarkeitsbereich wie bei 'normalen' Variablen verwendet wird.

    #include <iostream>
    using namespace std;

    int foo(int value=0)
    {
      static int val=0;
      if(value!=0) val=value;
      return val;
    }

    int bar(int a)
    {
      {
        static int b=a;
      }
      //return b; //wuerde nicht gehen, da b zwar noch existiert
                  //aber der Sichtbarkeitsbereich bereits verlassen wurde
      return a;
    }

    int main()
    {
      foo(3);
      cout<<foo()<<'\n';
    }

Eine static Variable wird nur einmal initialisiert, nämlich beim ersten Aufruf der Funktion. Die Zeile static int val=0; wird somit nur einmal ausgeführt und val behält seinen Wert bei weiteren Funktionsaufrufen.

top