Array
Array
Kernkonzept
- Ein Array ist eine Liste von Daten gleichen Typs
- Hat eine feste Länge
- Wir dim Speicher hintereinander abgelegt

-
Warum Arrays?
- Variablen sind perfekt für einzelne Elemente bringen aber Probleme und Einschrnkungen mit sich:
- mehrere Elemente des gleichen Typs
- Darstellung: a1, a2, a3, a5, ..., a10
- viel zu viel Schreibarbeit
- keine Möglichkeit der Iteration
- keine Strukturierung
- mehrere Elemente des gleichen Typs
- Variablen sind perfekt für einzelne Elemente bringen aber Probleme und Einschrnkungen mit sich:
-
Arrays und Pointer
-
Zugriff auf Array-Elemente
int32_t data[10]; // int32_t = 4 Bytes => 40 Bytes int32_t* p = data; // p points to array int32_t* q; *p = 2; q = p + 1; // “+ 1“ means: // “+ (1 * element size)“ => + 4 Bytes *q = 3; *(p + 2) = 5; // + 2 elements !!!- Mit Index einfacher
- Zugriff auf Arrayelemente mit Index in [ ]
- Erstes Element hat den Index "0", d.h. [0] !
int32_t data[10]; data[2] = 6; // Zugriff in data[0] = 5; // beliebiger data[1] = 4; // Reihenfolge
- Mit Index einfacher
-
Initialisierung von Arrays
// Deklaration Array mit Speicherplatz für 5 Integer int32_t a[5]; /* Deklaration mit Initialisierung Array mit Speicher für 5 Integer */ int32_t arr[] = { 1, 8, 7, -1, 2 }; -
man kann alles Arrayelemente mit einer for-Schleife durchlaufen
-
es gibt mehrdimensionale Arrays:
int32_t mat[3][2] = { {00, 01}, {10, 11}, {20, 21} }; -
zweidimensionale Array visualisiert:
![[Tag7-Dienstag-Programmierkurs.pdf#page=46]] -
Ein Array reserviert den vorgegebenen Speicherplatz automatisch
-
ACHTUNG: Es wird nicht überprüft, ob
indexinnerhalb des reservierten Speicherplatzes liegt -> andere Speicher kann ausgelesen oder überschrieben werden -
Call-by-Value gibt es bei Arrays nicht
Probleme:
- Die Anzahl der Elemente ist oft vorher nicht bekannt
- Die Anzahl ändert sich während des Programmdurchlaufs
- Löschen: Lücken im Array
- alle weiteren Elemente müssen verschoben werden
- Einfügen: Neues Array und Daten müssen hineinkopiert werden
- Größe wird bei der initialisierung festgelegt -> nicht änderbar
- …
- Folgerung:
- Brauchen dynamischere Möglichkeit der Speicherverwaltung
- Möglichkeiten: − Ad hoc mittels malloc / realloc
- Oder mittels dynamischer Datenstrukturen