Arrays
Du möchtest wissen, wie du Arrays in C programmieren kannst? Im Folgenden zeigen wir dir, wie das Ganze funktioniert.
Inhaltsübersicht
Arrays C – Was sind Arrays?
Damit du diese praktischen Helfer verwenden kannst, musst du erst einmal wissen, was Arrays oder Felder, wie sie zu Deutsch genannt werden, sind. Im Grunde genommen hat ein Feld nicht viel mit Arrays zu tun.
Solange wir uns auf die eindimensionalen Arrays beschränken, kannst du sie dir eher vorstellen, wie eine nummerierte Tabelle. Wir haben eine bestimmte Anzahl an Feldern, denen wir eine Nummer zuordnen. Diese Felder müssen alle vom selben Datentyp sein. Diesen Datentyp weist dann auch das Array selbst auf.
Programmieren von Arrays
Deklariert wird ein Array so:
type array_name [number_of_components];
Der Datentyp bildet den Anfang. Gleich danach geben wir unserer Liste einen Namen, damit wir in unserem Stapel von Blättern auch noch die richtige Liste finden. Außerdem müssen wir noch die Menge der maximal speicherbaren Komponenten angeben.
Das ist logisch. Schließlich gibt es nur begrenzt Platz auf einem Blatt Papier, und mit Speicher verhält es sich nicht anders. Der Compiler muss nämlich wissen, wie viel Speicher er für unser Array reservieren muss. Wenn er das tut, nutzt er auch unseren Array-Namen. Um den Anfang unseres Feldes finden zu können, speichert er in diese Konstante nämlich die Adresse der ersten Speicherzelle, die reserviert wird.
Werte aufrufen
Das ist ja schön und gut, aber mit einer leeren Tabelle können wir erst einmal nicht viel anfangen. Wie speichern wir also Werte hinein? Gibst du den Arraynamen mit einer normalen Wertzuweisung an, erhältst du einen Fehler im Programm, da du die Speicheradresse deines Arrays bearbeitest, nicht die gespeicherten Komponenten. Um an die Werte unseres Arrays zu kommen, müssen wir jedes „Tabellen-Feld“ einzeln ansprechen. Das können wir mittels eines Index. Mit:
array_name [i] = 1;
können wir also auf den Listen-Eintrag Nummer i-1 zugreifen. Aber warum i-1? Das liegt daran, dass der erste Wert unseres Feldes in array_name[0] gespeichert wird. Der Rest der reservierten Speicherzellen liegt direkt dahinter.
Willst du jetzt beim Initialisieren nicht wieder genau so viel Arbeit wie vorher haben, indem du jeden Wert einzeln zuweist, kannst du – wenn auch nur bei der Initialisierung – auf diesen Befehl zurückgreifen:
int array_name [3] = (50, 95, 7);
Damit werden die Werte des Arrays von links nach rechts mit den angegebenen Werten aufgefüllt.
Ausnahmen
Wie immer gibt es natürlich eine Ausnahme zu dieser Regel. In diesem Fall sind das die Arrays vom Typ char. Bei „normalen“ Arrays musst du nur aufpassen, dass du nicht aus Versehen auf eine Speicheradresse außerhalb des, für dein Feld reservierten, Speichers zugreifst. Im Gegensatz zu den meisten möglichen Fehlern in C gibt der Compiler hier nämlich keinen Fehler aus. Das heißt aber nicht, dass du damit keinen Schaden anrichtest.
Im Gegenteil – du manipulierst die Werte einer Speicherzelle, die für etwas ganz Anderes gedacht war. Dadurch kannst du unter Umständen sogar ein ganzes Programm zum Absturz bringen.
Nun kannst du also Arrays innerhalb der main-Methode verwenden, aber was, wenn du sie an eine andere Funktion übergeben willst? Das ist ganz einfach, denn du musst weder beim Funktionsaufruf, noch im Funktionskopf der Methode die Größe deines Arrays angeben. Allerdings musst du die Länge deines Feldes dadurch als extra Parameter angeben, wenn sie gebraucht wird.