C - Array Größe während der Laufzeit wählen?
Wie kann ich die Größe eines Arrays während des Programmablaufs bestimmen? Wie muss ich vorgehen und was sind die Stichworte die mir weiterhelfen?
2 Antworten
Array nicht als Array deklarieren, sondern als Pointer auf Typ.
Also z. B.
int *dynamisches_feld;
Dann das Ding per malloc oder calloc auf gewünschte Größe aufspannen:
dynamisches_feld=malloc(feldgroesse*sizeof(int));
oder
dynamisches_feld=calloc(feldgroesse,sizeof(int));
Unterschied zwischen beiden Wegen: bei malloc() bekommst Du ein uninitialisiertes Feld (mit potenziell beliebigen Werten drin), calloc() setzt alle Feldelemente definiert auf 0.
Sicherheitshalber nach malloc()/calloc() prüfen, ob Du den Speicher überhaupt bekommen hast:
if (dynamisches_feld==NULL) { /* Fehlerbehandlung */ }
Stichwort dynamische Speicherverwaltung
- http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/014_c_dyn_speicherverwaltung_002.htm
- http://www.cplusplus.com/reference/cstdlib/malloc/
- http://www.cplusplus.com/reference/cstdlib/calloc/
- http://www.cplusplus.com/reference/cstdlib/realloc/
- http://www.cplusplus.com/reference/cstdlib/free/
Ein weiterer Tipp ist, statt eines Arrays eine verkettete Liste zu verwenden