Array in c++

derdidi

Grünschnabel
Hallo,
habe ein Prob. im Visualcompiler. Ich will ein Array n-ter größe erzeugen das erst zur laufzeit bestimmt werden soll.

int array[n];

Das will der aber nicht so akzeptieren. Ich weiß das es auf anderen systemen geht ( unix zb ) . Hat jemand Ahnung ob das eine Einstellungssache ist oder so

Danke
 

Maximka

Erfahrenes Mitglied
Dein Beispiel funktioniert auch mit allen C/C++ - Compilern nicht.
Da das Array (int array[n]) eine statische Datenstruktur ist, kann n nur ein konstanter Ausdruck sein, dessen Wert schon zur Compile-Zeit feststeht.

Wenn du eine dynamische Datenstruktur haben willst,
hier der Code:
Code:
int* array;
// damit alloziieren wir Platz fuer n-Integer, unser n-elementiges Array
array=new int[n];
// n werte einlesen
for(int i=0;i<n;i++)
{
    cin >> array[i];
};
// und wieder freigeben nicht vergessen
delete[] array;
 

Thomas Kuse

Erfahrenes Mitglied
dynamische speicherung

Tip:
Von der Möglichkeit durch new und delete ständig gesamte Speicherbereiche dynamisch zu ändern, sollte lieber abgesehen werden, da dies einen recht grossen Aufwand darstellt.

Dynamische Speicherung sollte man möglichst mit Bäumen oder recht einfach mit einer verketteten Liste ( tutorials.de thread) realisieren.
 

derdidi

Grünschnabel
jop,
klasse, genau das wollte ich. Das über einen zeiger zu machen war wohl auch die intention unseres profs. Bin aber selbst net drauf gekommen.
Denke mal dass er das auf seinem system (linux ) auch so gemacht hat.

Danke
 

Maximka

Erfahrenes Mitglied
@Thomas:
Von der Möglichkeit durch new und delete ständig gesamte Speicherbereiche dynamisch zu ändern, sollte lieber abgesehen werden, da dies einen recht grossen Aufwand darstellt.
Kommt drauf an was das gerade fuer ein Fall ist, denn wenn ich schnelle Zugriffzeit brauche ist ein zusammenhaengender Speicherbereich besser.