Ein Feld dynamische erzeugen.
-
Hallo liebe Coder-Community, ich benötige ein gutes Beispiel mit der Funktion malloc(). Ich habe ein Programm zu schreiben, bei der ich kein festes Feld deglarieren soll, sondern das Feld dynamisch den Platz anpasst. Leider verstehe ich nicht so richtig wie das funktioniert.
Außerdem würde ich gerne wissen, was "(int)" int Klammern bedeutet!
freude mich auf eure antworten, vielen Dank
-
statisch:
int feld[5]; feld[0] = 1; ...
dynamisch:
int laenge = 5; // 5 Werte int *feld = (int *) malloc (laenge * sizeof (int)); if (feld == NULL) ; // Fehler, nicht genug Speicher else { feld[0] = 1; ... }
Habs jetzt nicht getestet, sollte aber klappen.
-
ronny2 lass doch den schwachsinn bitte sein, ja!
dynamisch allozierst du so:
int anzahl = 120; int *feld = malloc(sizeof(int) * anzahl);
damit reservierst du speicher für "laenge mal die größe eines einzelnen int wertes" also insgesamt für 120 int werte. der pointer feld zeigt anschließend auf diesen reservierten speicherbereich und du kannst feld dann ganz normal benutzen wie ein "normales" array.
das (int) ist ein sogenannter expliziter typcast, womit du einen datentyp explizit in einen anderen konvertieren kannst.