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.