Arrays

Ein Array ist eine Sammlung von Objekten desselben Datentyps, die zusammenhängend im Speicher zugeordnet sind. Auf einzelne Objekte in einem Array, die als Elementebezeichnet werden, wird über ihre Position im Array zugegriffen. Der Subskribierungsoperator ([]) stellt die Mechanismen zum Erstellen eines Index für Array-Elemente bereit. Diese Form des Zugriffs wird als Indexierung oder Subskribierungbezeichnet. Ein Array erleichtert die Codierung sich wiederholender Tasks, indem die Anweisungen, die für jedes Element ausgeführt werden, in eine Schleife gestellt werden, die durch jedes Element im Array iteriert.

Die C-und C + + -Sprachen bieten eingeschränkte integrierte Unterstützung für einen Array-Typ: Lesen und Schreiben einzelner Elemente. Die Zuordnung eines Arrays zu einem anderen, der Vergleich von zwei Arrays für Gleichheit, die Rückgabe von Selbstkenntnis der Größe werden von keiner Sprache unterstützt.

Der Typ eines Arrays wird vom Typ seiner Elemente abgeleitet, was als Array-Typableitungbezeichnet wird. Wenn Arrayobjekte einen unvollständigen Typ aufweisen, wird der Arraytyp auch als unvollständig betrachtet. Array-Elemente dürfen nicht den Typ void oder den Funktionstyp aufweisen. Arrays von Zeigern auf Funktionen sind jedoch zulässig. C++ Array-Elemente dürfen keinen Referenztyp oder einen abstrakten Klassentyp aufweisen.

Der Array-Deklarator enthält eine Kennung gefolgt von einem optionalen Indexdeklarator. Eine Kennung, der ein Stern (*) vorangestellt ist, ist ein Array von Zeigern.

Syntax des Array-Subscript-Deklarators

Syntaxdiagramm lesenVisuelles Syntaxdiagramm überspringen [Konstant_Ausdruck]
Der Konstantenausdruck ist ein konstanter ganzzahliger Ausdruck, der die Größe des Arrays angibt, das positiv sein muss.

Der Indexdeklarator beschreibt die Anzahl der Dimensionen im Array und die Anzahl der Elemente in jeder Dimension. Jeder Ausdruck in Klammern oder Index beschreibt eine andere Dimension und muss ein konstanter Ausdruck sein.

Im folgenden Beispiel wird ein eindimensionales Array definiert, das vier Elemente des Typs charenthält:
char list[4];
Der erste Index jeder Dimension ist 0. Das Array list enthält die folgenden Elemente:
list[0]
list[1]
list[2]
list[3]
Im folgenden Beispiel wird ein zweidimensionales Array definiert, das sechs Elemente des Typs intenthält:
int roster[3][2];
Mehrdimensionale Arrays werden in übergeordneter Zeilenreihenfolge gespeichert. Wenn Elemente in der Reihenfolge der Erhöhung der Speicherposition referenziert werden, variiert der letzte Index am schnellsten. Die Elemente des Arrays roster werden beispielsweise in der folgenden Reihenfolge gespeichert:
roster[0][0]
roster[0][1]
roster[1][0]
roster[1][1]
roster[2][0]
roster[2][1]
Sie können die erste (und nur die erste) Gruppe von Subskriptions-Klammern leer lassen in:
  • Array-Definitionen, die Initialisierungen enthalten
  • extern Deklarationen
  • Parameterdeklarationen

In Array-Definitionen, die die erste Gruppe von Subskriptklammern leer lassen, bestimmt der Initialisierungsoperator die Anzahl der Elemente in der ersten Dimension. In einem eindimensionalen Array wird die Anzahl der initialisierten Elemente zur Gesamtzahl der Elemente. In einem mehrdimensionalen Array wird der Initialisierungsoperator mit dem Indexdeklarator verglichen, um die Anzahl der Elemente in der ersten Dimension zu ermitteln.