Reihungen in C
Reihungen (englisch “arrays ” [Plural]) werden auch „Felder“ genannt. Jedoch nennt man Felder von Datensätzen ebenfalls „Felder“. Um Verwechslungen mit diesen Feldern zu vermeiden, werden Reihungen hier „Reihungen“ genannt.
Definition lokaler Reihungsvariablen
Reihungen:
»int a[ 2 ];« deklariert eine Reihung mit zwei int-Werten.
Mehrere Objekte des gleichen Datentyps können mithilfe nur eines Namens und einer zusätzlichen Kennzahl identifiziert werden. Hierzu wird eine Reihung (engl. array ) definiert. Die Zahl der Komponenten der Reihung wird bei der Variablendefinition in eckigen Klammern hinter dem Variablennamen angegeben.
main.c
int main( void ){ int a[ 2 ]; }
Die Variable "a" hat den Datentyp "int[ 2 ]", sprich „eine Reihung von zwei int-Objekten“. Ein int-Objekt ist ein Speicherplatz, der einen int-Wert speichern kann.
Eine Reihung ist ein Folge von Komponenten, die alle den gleichen Datentyp haben.
»int a[ 2 ];« deklariert eine Reihung mit zwei Komponenten.
Im Speicher werden mit dieser Definition zwei Objekte vom Datentyp "int" angelegt.
Ein Objekt vom Datentyp "int[ 2 ]"
.--------------.
| int-Objekt 0 |
|--------------|
| int-Objekt 1 |
'--------------'
Eine Reihung ist also ein Objekt, das selber wieder Objekte enthält. Solch ein Objekt nennt man auch einen Aggregat. Die enthaltenen Objekte werden auch Komponenten oder Unterobjekte genannt.
Die Objekte in der Reihung sind zunächst einmal namenlos (anonym), das heißt: Sie haben nicht notwendigerweise einen eigenen Trivialnamen. Indirekt kann der Name der Reihung verwendet werden, um sich auf eine Komponente der Reihung zu beziehen.
Die in dieser Lektion vorgestellten Reihungen sind klassische Reihungen. Daneben gibt es auch noch andere Reihungen, die erst später behandelt werden sollen. Die Anzahl der Komponenten einer klassischen Reihung muß dem Übersetzer bekannt sein. Sie kann nicht erst zur Laufzeit bestimmt werden.
Initialisierungslisten
Die Werte, die in den Objekten einer Reihung enthalten sein sollen, können durch eine in geschweiften Klammern enthaltene Initialisierungsliste angegeben werden.
In dem folgenden Beispiel enthält die Reihung 2 Werte, nämlich 27 und 40.
Die geschweiften Klammern bilden in diesem Fall keine Verbundanweisung.
main.c
int main( void ){ int a[ 2 ]={ 27, 40 }; }
Wir werden erst etwas später sehen, wie man die in einer Reihung enthaltenen Werte auch wieder auslesen kann.
Falls die Initialisierungsliste kürzer ist als die Zahl der Unterobjekte, werden die restlichen Unterobjekte mit 0 initialisiert. (Dies gilt aber nicht, wenn gar keine geschweiften Klammern verwendet werden.)
In dem folgenden Beispiel enthält die Reihung 2 Werte, nämlich 27 und 0.
main.c
int main( void ){ int a[ 2 ]={ 27 }; }
Falls keine Größe der Reihung in den eckigen Klammern angegeben ist, wird diese durch die Anzahl der Werte der Initialisierungsliste festgelegt (hier als 2).
In dem folgenden Beispiel enthält die Reihung 2 Werte, nämlich 27 und 40.
main.c
int main( void ){ int a[]={ 27, 40 }; }