Globale und Lokale veränderung
-
#include <iostream> using namespace std; void test(void); int x = 10; int main() { test(); cout << "Der Wert von x in main() ist " << x << endl; return 0; } void test() { cout << "Der Wert von x in test() ist " << x << endl; x = x + 10; }
Warum hat x in main den wert 20? Wenn die funktion test geschlossen wird wird doch der Inhalt der Variable wieder auf ihren globalen wert zurück gesetzt.
-
Facer schrieb:
Wenn die funktion test geschlossen wird wird doch der Inhalt der Variable wieder auf ihren globalen wert zurück gesetzt.
wer hat dir denn das erzählt? du verwechselst das mit lokalen variablen. die sind weg, wenn der {}-block verlassen wird.
-
Ach so nur bei lokalen weil wenn die Klammern bei test zu sind ist ihr inhalt ja auch gelöscht.
-
Nun weisst du hoffentlich auch, wieso man globale Variablen nur mit Bedacht einsetzen sollte?!
-
Weil man ausversehen ihren Wert ändern kann ohne das zu wollen?
-
Facer schrieb:
Weil man ausversehen ihren Wert ändern kann ohne das zu wollen?
genau!
-
Facer schrieb:
Ach so nur bei lokalen weil wenn die Klammern bei test zu sind ist ihr inhalt ja auch gelöscht.
Gelöscht wird da normalerweise nix. Wenn lokale Variablen ihren Gültigkeitsbereich ({}-Block) verlassen, sind die für dich tot. Dh, weiterhin darauf zuzugreifen (zB über Referenzen oder Zeiger) ist nicht erlaubt.