
Ein Array ist wie eine Reihe von Schubladen mit nummerierten Fächern. Jede Schublade fasst genau einen Wert – und du erreichst sie mit dem Index!
Array – Grundkonzept
Ein Array speichert mehrere Werte desselben Typs unter einem Namen. Indizes beginnen immer bei 0.
Deklaration & Zugriff
int n[5] = {1,3,2,1,4}; // Deklaration + Init printf("%d\n", n[0]); // Erstes Element: 1 printf("%d\n", n[4]); // Letztes: 4 for(int i=0;i<5;i++) printf("%d ",n[i]);
⚠️ Index beginnt bei 0!
Letztes Element: arr[Größe - 1]. Zugriff auf arr[Größe] ist ein Bug – C prüft keine Grenzen!
Array-Operationen
Mit einer einfachen for-Schleife lassen sich Minimum, Maximum, Summe und Durchschnitt eines Arrays berechnen.
int a[5] = {7, 2, 9, 4, 1}; int min = a[0], max = a[0], summe = 0; for (int i = 0; i < 5; i++) { if (a[i] < min) min = a[i]; // Minimum suchen if (a[i] > max) max = a[i]; // Maximum suchen summe += a[i]; // Summe aufaddieren printf("%d ", a[i]); // Ausgeben } printf("\nMin: %d Max: %d\n", min, max); printf("Summe: %d Schnitt: %.1f\n", summe, (float)summe / 5);
Wichtig: Mit a[0] starten
Minimum und Maximum müssen mit dem ersten Element initialisiert werden – nicht mit 0! Sonst stimmt das Ergebnis bei negativen Zahlen nicht.
Häufige Fehler
| Fehler | Problem | Richtig |
|---|---|---|
| i <= n | Off-by-one: greift auf arr[n] zu – Out-of-bounds! | i < n |
| Falsche Konstante | int arr[5] aber Schleife bis 6 | Konstante definieren: #define N 5 |
| Nicht initialisiert | int arr[5]; enthält zufälligen Speicher (Garbage Values) | int arr[5] = {0}; initialisiert mit 0 |
| arr2 = arr1 | Arrays können nicht direkt kopiert werden – nur Pointer wird kopiert | Element für Element in Schleife kopieren |
⚠️ Garbage Values
Ein nicht initialisiertes Array enthält zufällige Werte aus dem Speicher. Immer initialisieren: int arr[5] = {0}; setzt alle Elemente auf 0.
sizeof – Array-Größe bestimmen
Der sizeof-Operator gibt die Byte-Größe eines Typs oder einer Variable zurück. Bei Arrays lässt sich damit die Elementanzahl berechnen:
int zahlen[5] = {10, 20, 30, 40, 50}; int n = sizeof(zahlen) / sizeof(zahlen[0]); // 20 / 4 = 5 printf("Anzahl Elemente: %d\n", n); // 5 printf("Bytes gesamt: %zu\n", sizeof(zahlen)); // 20
| Ausdruck | Ergebnis | Erklärung |
|---|---|---|
| sizeof(zahlen) | 20 Bytes | 5 Elemente × 4 Bytes pro int |
| sizeof(zahlen[0]) | 4 Bytes | Größe eines einzelnen int |
| 20 / 4 | 5 | Anzahl der Elemente |
sizeof nur im selben Scope!
Dieser Trick funktioniert nur dort, wo das Array deklariert wurde. Innerhalb einer Funktion gibt sizeof(arr) nur die Pointer-Größe zurück – nicht die Array-Größe!
⚡ Code-Simulator
Teste Array- und String-Operationen direkt im Browser:

Ändere die Array-Werte oder den Code und beobachte die Ausgabe. So lernt man Arrays am besten!
🎯 Wissens-Quiz
📋 Spickzettel
✅ Checkliste Unit 21
- Ich kann ein Array deklarieren und initialisieren
- Ich greife mit dem richtigen Index auf Elemente zu
- Ich kann ein Array mit einer for-Schleife durchlaufen
- Ich kenne die Off-by-One Gefahr beim Array-Index