Wie erstellt man einen dynamischen Array in C ++?
Ich möchte die Länge einer integer Zahl einlesen und so groß soll dann der Array sein. Da die Größe eines Arrays (normalerweise?, vielleicht gibt es da ja Möglichkeiten) konstant ist, geht das natürlich nicht mit einer for-Schleife, welche pro 'durch-10-Teilung' einer Zahl eins hochzählt.
Also: Wie löst man das?
3 Antworten
// Ein Feld mit 5 int-Elementen erzeugt man mit:
int *Feld = new int [5];
// Zum Schluss muss man es wieder loeschen.
delete [] Feld;
Der new-Operator kann auch einzelne Variablen (z.B. Klasseninstanzen) erzeugen, also nicht nur Felder.
Deshalb muss man dem delete-Operator mitteilen, ob es sich und ein Feld handelt. Dazu dienen die eckigen Klammern.
// einzelnes int erzeugen
int *Data = new int;
// und loeschen
delete Data; // ohne Klammern
Besser wäre ein Smart Pointer dann kann man das delete Weglassen und der Code ist eher gegen Memoryleaks geschützt.
vgl. https://stackoverflow.com/questions/9704469/c-new-vs-malloc-for-dynamic-memory-array-of-objects#
Wenn std::vector zur Verfügung steht, würde ich das nehmen - wozu sich überflüssige Mühe machen und überflüssige Fehlermöglichkeiten einbauen?
Es sei denn, es ist eine Schülerübung und ihr sollt den Umgang mit malloc() und free() üben.
Int count = Länge;
int[] arr = new int[länge];
for (…){befüllen auf entspannt}
Verstehe ehrlich gesagt nicht ganz, wie das funktioniert. Habe auch erst angefangen zu programmieren :(
dann gönn dir n paar vieos diggi, das oben war eh java, du musst durchziehen, gebe nicht auf, zieh durch, jeder kann es schaffen
Ist keine Schülerübung. malloc und free hab ich auch schon probiert aber es kommt da eine Fehlermeldung bei malloc