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

C++ Grundkurs

C-Arrays

Testen Sie unsere 2017 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
C-Arrays erhalten innerhalb von C++ eine festgeschriebene Anzahl eines bestimmten Typs.
05:03

Transkript

In dieser Lektion möchte ich ihnen C-Arrays vorstellen. Ich will den Umgang mit C-Arrays im ein- und mehrdimensionalen Fall vorstellen. Ich will Ihnen zeigen, wie Sie sie an Funktionen übergeben, wie Sie sie initialisieren und zum Schluss gebe ich Ihnen ein paar Tipps rundum C-Arrays. C-Arrays enthalten eine feste Anzahl von Elementen eines Typs. Auf die Elemente können Sie dann mit Index oder per Zeigerarithmetik lesend oder auch schreibend zugreifen. Die Indizes starten bei 0. Es ist wichtig zu wissen, wenn Sie nämlich einen Fortran-Hintergrund haben, würden Sie erwarten, dass die Indizes bei 1 beginnen. Hier ein kleines Beispiel. Hier definiere ich eine Konstante ArrayCount = 100, lege ein Array an mit 100 Elementen vom Typ int und jetzt kann ich ganz einfach drüber iterieren. von int i= 0 bis kleiner ArrayCount, iteriere darüber, und jedes einzelne Element kann ich durch den Klammeroperator hier ansprechen. Diese Syntax hier ist analog zu dieser Syntax hier. Arrays sind sehr ähnlich wie Zeiger. Ich finde diese Syntax hier aber deutlich lesbarer. Diese Syntax bedeutet hier, nimm Array, den Zeiger auf Array, addiere ein int dazu, 1, 2, 3, 4, 5, dereferenziere den Wert und weise die -1 zu. Für mehrdimensionale Arrays gelten die gleichen Regeln. Sind einfach Arrays mit mehr als einem Index. Ich habe hier ein zweidimensionales Array dargestellt. Die erste Dimension entspricht dem Wert 10. Die zweite Dimension hat den Wert von 20, und so habe eine Matrix 10 x 20. In der äußeren Schleife iteriere ich über den ersten Index. In der zweiten oder inneren Schleife iteriere ich über den zweiten Index und so kann ich auf die einzelnen Werte zugreifen. matrix [i] [j] = -1. Wenn ich das jetzt mit der Zeigerarithmetik mache, sehen Sie, dass das schon deutlich hässlicher wird. Ich muss auch ehrlich gestehen, da muss ich kurz selber überlegen, wie ich das mache. Dann kommen wir zum nächsten Punkt, wie kann man Arrays an Funktionen übergeben. Die erste interessante Regel ist, wenn Sie ein Array einer Funktion übergeben, muss jede Dimension außer der ersten bekannt sein. D. h., in diesem Fall müssen Sie die erste natürlich nicht explizit angeben, weil die nicht bekannt sein muss. In diesem Matrixfall - ein zweidimensionales Array - ist nur die zweite Dimension anzugeben. Ich bin vorher schon auf die enge Verwandtschaft von Arrays mit Zeigern eingegangen. Das sehen Sie auch hier. Sie können natürlich das Array auch als Zeiger auf int oder als Zeiger auf eine Matrix angeben. Hier sind diese runden Klammern essentiell, weil ohne diese runden Klammern wird dieser Ausdruck als einfaches C-Array von int-Zeigern interpretiert werden. Das Initialisieren von Arrays ist sehr praktisch. Das geht über sog. Initialisierungslisten. Wenn Sie die Größenangabe nicht explizit angeben, ermittelt das der Compiler automatisch aus der Initialisierungsliste. So ist das Array hier 1, 2, 3, 4, 5, Elemente groß, und vom Typ int. Den Typ habe ich natürlich explizit angegeben. Falls Sie eine Größe explizit angeben und hier nur fünf Elemente spezifizieren in der Initialisierungsliste, werden die restlichen Elemente per Default initialisiert. Bei Integer ist der Default-Wert eben 0. Diese Regeln gelten natürlich auch für den mehrdimensionalen Fall. Jetzt noch ein paar abschließende Worte. C-Arrays haben einige Nachteile. Ihre Größe kann nicht zur Laufzeit angepasst werden. Sie besitzen ein sehr eingeschränktes Interface. Sie können nicht einmal die Größe eines C-Arrays bestimmen. Sie sind nicht - und das halte ich fast für den größten Nachteil - kompatibel mit den Algorithmen der Standard Template Library. Die Standard Template Library hat einen Satz von gut über 100 Algorithmen, die ein gewisses Interface von ihren Datentypen voraussetzen und genau dieses Interface bietet das C-Array nicht an. Und sie verwalten natürlich nicht automatisch ihren Speicher. D. h., Sie müssen sich um die Speicherverwaltung kümmern, wenn Sie es z. B. dynamisch anlegen. Aber, und das ist das große Problem, C-Arrays werden einfach noch in bestehendem Code verwendet im sog. Legacy Code. Von daher haben Sie einfach C-Arrays und Sie müssen lernen, damit umzugehen. Trotzdem ein Tipp, wenn möglich sollen Sie std::vector oder std::array aus der Standard Template Library verwenden. Die bieten einfach ein deutlich umfangreicheres Interface an. Beide können Sie mit den Algorithmen der Standard Template Library verwenden. std::vector wächst dynamisch. std::array ist sehr ähnlich wie das C-Array, hat eine statische Größe. Dessen Größe Sie zur Compilezeit angeben müssen. Das ist aber kompatibel mit den Algorithmen der Standard Template Library. Sie können ein std::array daher mit einem Algorithmus der Standard Template Library verwenden. In dieser Lektion habe ich Ihnen das C-Array vorgestellt. Ich habe Ihnen vorgestellt, wie Sie ein ein- und mehrdimensionales C-Array definieren und initialisieren können. Ich habe Ihnen gezeigt, wie Sie es an Funktionen übergeben können und ich Ihnen gerade auf dieser letzten Seite gezeigt, dass Sie im Zweifelsfall natürlich immer std::vector und std::array verwenden sollten, weil die u. a. ihren Speicher automatisch verwalten.

C++ Grundkurs

Steigen Sie in die mächtige Programmiersprache C++ ein und lernen Sie dabei alle wichtigen Funktionen mit Anwendungsbeispielen kennen.

8 Std. 14 min (147 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

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!