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

C++

Eindimensionale Felder (arrays)

Testen Sie unsere 2013 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
In diesem Film zeigt der Trainer die Definition und Verwendung von Datenfeldern. Erfahren Sie auch, wie Sie solche Arrays richtig initialisieren, und bekommen Sie weiterführende Tipps des Trainers.

Transkript

Ein ganz wichtiges Kapitel sind Speicherfelder. Bisher hatten wir ja nur Eins, in den Zellen belegt, zum Beispiel mit einem Integer, ein Variablenname. Ich mache das jetzt mal hier mit einem Feld. Ein Feld ist einfach eine Ansammlung von Zahlen, die ich irgendwo ablegen möchte und ich könnte so ein Feld hier zum Beispiel mit 100 Elementen definieren, einfach indem ich hier in eckigen Klammern die Anzahl der Elemente, die in das Feld sollen, reinschreibe. Und wie bekomme ich da jetzt einen Wert rein? Das ist relativ leicht. Das geht nach dem gleichen Schema. Ich kann zum Beispiel hier in das Element "10" den Wert "eins, zwei, drei" reinschreiben und ich kann hier zum Beispiel in das Element "null", den Wert "fünf" reinschreiben. Wichtig ist, dass das Ganze von null bis 99 reichen soll. Das ist wichtig. Es fängt also bei Null an. 100 Elemente gehen mit dem Index von Null bis 99. Der Hundertste Index ist nicht mehr definiert, führt unter Umständen, oder eigentlich ziemlich sicher, zu irgend einem Fehler. Nun kann ich das Ganze natürlich mal ausgeben. Ich kann ja hier genau so lesen und drauf zugreifen. Das ist ganz klar, nicht? Die anderen Feldelemente sind undefiniert. Da kann irgendwas drinstehen. Es ist nicht gesagt, dass da der Wert "null" drinsteht. Können wir gleich mal ausprobieren. Ich starte das jetzt mal hier. Das ist, wie gesagt, reiner Zufall, was da kommt und wir haben natürlich auch hier prompt einen kleinen Fehler eingebaut. Den schauen wir uns gleich mal an, wo das was passiert ist. Ein Syntaxfehler: Es fehlt die Klammer vor geschweifte Klammer auf. Da ein ganz blöder Fehler, hier oben habe ich versehentlich vorher beim Eintippen eine Klammer eingegeben. So jetzt starten wir das mal. Wunderbar! Da kommt der Wert "fünf" raus. Das war ja jetzt nicht wirklich aufregend. Ich zeige Ihnen mal, was hier jetzt bei "eins" rauskommt. Aufrufen darf man es im Allgemeinen ungestraft, naja, aber hier nicht. Sie sehen schon, das hängt jetzt sehr vom Compiler ab, ist nicht initialisiert. Er ist hier nämlich relativ schlau und sagt, das Ganze, kann man hier gleich eine Meldung an Microsoft schicken, das wollen wir aber jetzt nicht tun. Das Element "zehn" zum Beispiel ist definiert. Das hängt jetzt von den Compiler-Einstellungen ab, ob so ein Fehler überhaupt entdeckt bleibt. Hier kommt "eins, zwei, drei" raus. Das ist sehr praktisch, wenn ich hier im Debug-Modus arbeite. Im Release-Modus können wir ja mal versuchen, mal auf das Element "elf" zuzugreifen und schauen uns mal an, was da passiert. Und Sie sehen schon, da kommt jetzt etwas Beliebiges raus. Da muss man nämlich aufpassen, der Trick ist nämlich, dass das Zeit kostet, diese Abfrage, ob etwas definiert ist oder nicht und deshalb im Debug-Modus ist es jetzt hier eingestellt. Es sind hier Einstellungen, die man hier mit der rechten Taste im Prinzip auch noch umstellen kann. Und im Release-Modus ist es auf "off", da wird keine Überprüfung gemacht, da geht man davon aus, dass das Programm dann soweit getestet hat, dass keine Fehlermeldung mehr erscheint, weil es dann natürlich auch schneller abläuft. So muss er natürlich bei jedem Zugriff prüfen, ob der Inhalt der Variable auch definiert ist, also ob vorher eine Zuweisung stattgefunden hat. Aber an sich ganz praktisch, im Bereich Fehlersuche am Anfang ist es sehr gut. Jetzt zeige ich Ihnen noch ein paar Möglichkeiten, wie man solche "Arrays" auch anlegen kann. Das kann natürlich auch etwas anderes als ein "integer" sein. Es kann ein "double" sein, es kann ein "character" sein. Und wir machen es jetzt mal hier mit "integer". Wir müssen ja nicht alle Kombinationen hier ausprobieren. Dann können Sie, auch gerne selber mal etwas tun. So, jetzt machen wir mal hier so was. Das geht nämlich auch. Also das ist, soweit ist es ja klar, wir legen sieben Elemente an, aber ich möchte die Werte auch gleich alle definieren und hier einstellen und da schreibe ich in geschweiften Klammern jetzt einfach mal rein (Jetzt mache ich es mir hier etwas leichter beim Eintippen), was da für Werte drinstehen. Also so was geht zum Beispiel. Ich kopiere das Ganze mal. Was auch geht, ist eine andere Variante, ich mache mal hier "Daten zwei", in die eckigen Klammern einfach gar nichts reinzuschreiben. Dann bekomme ich hier so viele Elemente, im "Array", wie hier auch Elemente bei der Initialisierung gegeben sind. Und damit Sie mir das auch glauben, gebe ich hier mal "idaten zwei von drei" noch aus und brauchen wir da noch einen Zeilenvorschub, schauen uns das mal an, "debuggen", ich starte ohne "Debug", was da wieder rauskommt bei der ganzen Geschichte. Das ist dann der Wert "vier", das Element "null, eins, zwei, drei" hat ja den Wert "vier". Da muss man, wie gesagt, immer ein bisschen aufpassen, bei der Zählweise. Hier gehen die Elemente halt von "null" bis "sechs". Also, das schreibe ich ruhig mal dahinter: "null bis sechs", das ist wichtig. Diese Indizierung, die muss man sich ein bisschen merken. Da muss man echt aufpassen, dass da nichts passiert nachher. Und Zugriffe auf Elemente, die hier nicht definiert sind, so was zum Beispiel führt dann auch zum Fehler, wenn man Glück hat. Hier im Debug-Modus auf jeden Fall. Da machen wir aber jetzt hier einen Abbruch. Hier ist, ohne initialisiert zu werden, es ist natürlich der gleiche Effekt, den wir vorher schon hatten - keine Frage - aber er ist auch nicht mal im Speicher irgendwo festgelegt. Und hier muss man ein bisschen aufpassen, wenn ich das Ganze im Release-Modus mache, hängt es davon ab, wenn ich lese, ist es einigermaßen sicher, dass nichts passiert. Schreibe ich aber, schreibe ich unter Umständen, hier kommt halt irgendein Wert raus, in den Speicherbereich rein und erhalte dann ein beliebiges Ergebnis. Also da muss man ein bisschen aufpassen, damit man da keine Fehler macht, eine der häufigsten Fehlerursachen. Deshalb ist es gut, wenn der im Debug-Modus solche Möglichkeiten hat, Fehler schon einmal zu erkennen, dann tritt man da nicht so leicht drauf. Gefährlich ist es nämlich auch, wenn hier noch ein zweites Feld dahinter steht zum Beispiel und ich überschreibe das hier an der falschen Stelle, kann sein, dass ich mir hier unten irgendwo die Daten überschreibe. Und solche Fehler zu finden, ist, zumindestens hier im Release-Modus, extrem schwierig. Also, aufpassen bei Feldern. Hier haben Sie jetzt erst einmal gelernt, wie man Felder initialisiert, Daten reinschreibt und damit kann man schon eine Menge machen. Es gibt noch etwas, was ich gerne jetzt noch anfüge: "Data drei", schreibe ich jetzt hier zum Beispiel "100" ein und ich sollte jetzt hier alle mit "null" belegen, dann wäre das echt saublöd. Nun machen wir das erst mal so. Und hier kann man dann nämlich einfach "null" reinschreiben und ich starte das nochmal kurz, sehen, dass er es auch schluckt. Jetzt sind eigentlich alle Feldelemente mit "null" initialisiert. Und damit Sie mir das auch glauben, machen wir hier zum Abschluss nochmal einen kleinen Test. "idata drei von 21", von mir aus. Das müsste ja noch dann definiert sein und da muss jetzt eigentlich auch der Wert "null" rauskommen. Einmal hier im Release-Modus, sehen Sie, ist "null" da und auch der Debug-Modus darf hier nicht schreien, wenn ich auf das Element zugreife. So ist es nämlich im ANSI-C definiert, dass ich hier alle Elemente dann mit diesem Wert initialisiere.

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!