static problem
-
hello

ich habe mir dieses Tutorial angesehen:
http://tutorial.schornboeck.net/static.htmdoch irgendwie verstehe ich nicht den Sinn der static Variable :S
kann mir bitte jemand etwas dazu sagen?
Patrick Florunger

-
static hat mehrere Bedeutungen. In dem Fall geht es eben darum, dass du eine Variable hast, die eine längere Lebensdauer haben soll. Probier das Programm doch mal aus, dann siehst du es vielleicht (und entferne zB mal das static und schau was sich ändert)...
-
Kann nur in dem Fall nur in der Funktion genutzt werden und besteht aber dennoch mehrere Funktionsaufrufe lang.
-
int foo(){ static int i = 0; i = i+1; return i; } int bar(){ int i = 0; i = i+1; return i; }rufe diese methoden mal mehrefach hintereinander auf, und gebe das resultat mit cout aus, dann weißt du wofür static gut ist. Es wird beispielsweise dafür gebraucht, um zu zählen, wie of eine Funktion schonmal aufgerufen wurde, oder um Objekten eine id zu geben, die sich nie wiederhohlen darf.
-
hy
also ich blicks echt net durch

Ausgabe:
2
1
1
1Da stimmt doch was nicht, die Funktion zählt ja hoch uund nicht in den minus bereich

int foo(){ static int i = 0; i = i+1; return i; }i = 0 => 1
beim nächsten aufrufe => 2Wieso ist ja nicht beim ersten aufruf eins und dann erst zwei

mfg
-
#include <iostream> int foo(); int bar() int main() { std::cout << "foo:" << std::endl; std::cout << foo() << std::endl; std::cout << foo() << std::endl; std::cout << foo() << std::endl; std::cout << foo() << std::endl; std::cout << "bar:" << std::endl; std::cout << bar() << std::endl; std::cout << bar() << std::endl; std::cout << bar() << std::endl; std::cout << bar() << std::endl; } int foo() { int i = 0; return ++i; } int bar() { static i = 0; return ++i; }...
}
-
Ich denke, du wirst es zwar auch so berichtigen können, aber:
bei DEvils Code noch den ; hinter der Deklaration von bar.sowie ein int in der Definition von bar hinter das static.
Nur kleine Schreibfehler, ich weisz. Wollte nur kurz darauf aufmerksam machen.
-
ok danke, nun verstehe ich es ein bisschen mehr

Patrick