Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

C++

Lokale Variable

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Erfahren Sie, wo der Unterschied zwischen lokalen und globalen Variablen besteht. Achten Sie auf die Tipps, die Ihnen der Trainer gibt.

Transkript

Ich möchte Ihnen nun zeigen, was es mit lokalen Variablen auf sich hat. Variablen haben wir ja schon verwendet, ich kann hier mal was machen. "double d1=123,4", oder "3", hier egal. So, das ist ja kein Problem, die geben wir jetzt mal hier aus. Das probiere ich jetzt gar nicht erst aus, weil das ist ganz klar, was da passiert. Ich will ihnen das ja jetzt im Zusammenhang mit Funktionen zeigen. Wir definieren jetzt hier oben mal eine Funktion, "myfun" nenne ich das mal hier gerade, mal zur Abwechslung, damit es nicht zu langweilig wird und wir schreiben mal hier kurz, da ganz schnell die entsprechenden Parameter rein. So, ich will nämlich jetzt hier auch was machen, nämlich auch ein "d1" verwenden. Und da schreibe ich jetzt irgendeine andere Zahl rein, zum Beispiel, und wir geben auch noch mal was aus: "cout << d1 << endl;". Und damit wir wissen woher das kam, schreibe ich vielleicht hier vorher "myfun:". Gebe das hier mal so als Text aus. Gut, das ist unser Hauptprogramm, wir wollen natürlich dieses 'myfun'-Ding, da auch aufrufen, das kopiere ich mir jetzt hier gerade mal rein. Da bin ich nur hier gerade daraufgekommen, das macht aber nichts, so. 'myfun' wird jetzt hier aufgerufen und zum Spaß auch nochmal danach. Jetzt starte ich das Ganze mal. Schauen was passiert, und was haben wir jetzt? 'myfun' hat 98 , hier kommt kommt "123.4", und 'myfun' hat immer noch 98, Also diese beiden Namen kommen sich hier nicht in die Quere. Das ist sogar so, man kann Variablen auch hier außen noch definieren. "=100.01" und auch auf diese Variablen habe ich mit den lokalen Variablen kein Einfluss, also ich kann die nicht überschreiben. Die sind gesichert so zu sagen. Da ändert sich jetzt gar nichts. Sie können jetzt fragen, wie komme ich denn an diese Variable ran. Na ja, entweder indem ich die hier nicht deklariere, dann wird automatisch die darübergestellt. Also in dem Fall die globale Variable. Starte es mal kurz. Oder in einer anderen Funktion, in der nicht gerade 'd1' definiert wird. Das funktioniert also, da gibt es natürlich auch, also "void". Schreibe mal hier "my2". Mach das hier nur ganz kurz mal. So und ich nehme einfach mal hier diesen Ausdruck. Diesmal deklariere ich aber hier nicht "double d1", sondern ich deklariere das 'd1' gar nicht, 'my2' heißt das Ding. So, und die müssen wir hier unten noch aufrufen. Das kann ich ja jetzt hier irgendwo machen, ist ja egal. Und vieleicht auch nochmal dahinter, dass man sieht, dass sich da wirklich nichts ändert, und ich starte das Ganze mal. Wir schauen uns wieder an, was da passiert. Jetzt gibt es ein Problem. Und was sagt er uns jetzt hier. 'out' nicht deklariert, da habe ich mich allerdings vertippt. Das ist natürlich ein dummer Fehler, sowas kann aber immer wieder mal passieren. Und jetzt starten wir das Ganze. Ja gut, 'myfun' liefert 98, 'my2' liefert 101, also '.01', dann '123.4' von Hauptprogramm und dann natürlich wieder 'myfun' und 'my2'. Sie sehen schon mit den Variablennamen, das ist eigentlich ganz vorteilhaft, also wenn ich innen was deklariere, hat es sozusagen Priorität. Man kommt in die Variable außen erst mal nicht ran. Das will man auch gar nicht, weil wir ja eigentlich lokal damit arbeiten. Gefährlich ist das Ganze natürlich, wenn man diese Deklaration vergisst und hier jetzt was gemeines macht. Jetzt nehme ich zum Beispiel "d1 = 7". Und hier auch keine lokale Variable verwende. Dann greife ich nämlich hier auf das 'd1' zu, was ich hier oben habe mit '100,01', es wurde aber in der Zwischenzeit, sobald ich 'my2' aufrufe, überschrieben. Sowas nennt man übrigens Seiteneffekte von Funktionen, oder Prozeduren. Eine ziemlich gefährliche Geschichte. 'my2' hat 7, das Hauptprogramm aber jetzt auch. Sie sehen die '100.01', die ist völlig verloren gegangen auf die Art und Weise. Also Seiteneffekte von Funktionen sind immer ein Gefahr bei C++. Der Grund, warum in Java man so was nicht erlaubt, nämlich globale Variablen zu definieren, aber das hat dann wieder andere Nachteile. Hier ist man relativ frei, muss aber ein bisschen darauf achten, wie man mit seinen Variablen und Namen umgeht und wie man die benennt. Es gibt noch ein paar Hilfestellungen in C++, die sogenannten Namensräume, da kann man sowas dann nochmal verhindern. Man sollte generell solche Namen auch immer lokal in den Prozeduren und Funktionen unterbringen, wenn es geht. Und die globalen Variablen vielleicht sogar durch einen Namen. - ich mach da immer 'g_' zum Beispiel davor - unterscheiden von den lokalen Variablen, so dass dieses Überschreiben hier nicht aus Versehen passieren kann. Es gibt ja hier keine Fehlermeldung, auch wenn Sie es vergessen haben und Sie wollten ursprünglich eine lokale Variable deklarieren, nur deshalb, weil der Name hier so klein und einfach gewählt ist, kann man so was leicht mal übersehen. Also lange Variablennamen helfen da natürlich auch.

C++

Machen Sie sich mit den einfachen Grundlagen zu C++ vertraut und lernen Sie anhand zahlreicher Übungs- und Codebeispiele die Klassenkonzepte, Prozeduren und Funktionen kennen.

9 Std. 3 min (143 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Video-Training auf DVD mit Bonusmagazin

+ Tutorial to go: Mit Videos für iPod, iPhone & Co.

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!