Wie funktioniert static?



  • Hallo

    wenn ich jetzt eine Funktion eine statische Variable hat

    void Funktion() {
    static int i = 10;
    }

    wird dann noch eine zusätzliche Variable angelegt um zu gucken ob die Variable initialisiert wurde oder wie wird das gemacht?

    Sorry für die dumme Frage. :p



  • static ist quasi eine globale Variable - die aber nur in dieser einen Funktion verfügbar ist - die Zuweisung geht nur beim 1. Aufruf. Beim beenden wird immer der letzte Wert gemerkt...



  • @<TS>
    die Zuweisung geht nur beim 1. Aufruf
    Stimmt nicht. Die Zuweisung geht bei jedem Aufruf... Sie bleibt aber bis zum terminieren des Programmes bestehen falls sich daran nix ändert. Was du wahrscheinlich meinst sind Konstanten.
    Guckt mal in die FAQ! Da steht ein ganzer Artikel da drüber...



  • int foo(int b) {
            static int a = 12;
    
            if (b != 0) a = 24;
            return a;
    }
    #include <cstdio>
    
    int main(void)
    {
            int a, b, c;
            a = foo(0); b = foo(1); c = foo(0);
            std::printf("%d, %d, %d\n", a, b, c);
    }
    

    Wenn ich dich richtig verstanden habe, dann wolltest Du einen Bugreport an das GCC-Team schreiben, weil es dieses Programm (im übersetzten Zustand) wagt, »12, 24, 24« auszugeben.


Anmelden zum Antworten