größe eines arrays

shrewm

Mitglied
Hallo, hab ein kleines Problem die größe eines Arrays fest zu legen.
Code:
int main()
{
	int ausgabe=0, i=0, anzahl;

	cout<<"Geben sie die anzahl der zahlen an: "<<flush;
	cin>>anzahl;

	int var[anzahl];   // <-- fehler
[....]
}

Funktioniert aber nicht so wies soll.
Die Fehler sehen so aus:
Konstanter Ausdruck erwartet
Reservierung eines Feldes der konstanten Groesse 0 nicht moeglich
'var' : Unbekannte Groesse

Danke schonmal für die Hilfe :)
 
Die Fehler basieren alle auf dem: Konstanter Ausdruck erwartet

Du darfst nur Felder konstanter Größen anlegen.
Wenn du ein nicht konstantes Feld anlegen willst, musst du mit Zeigern und new[] arbeiten.
 
Oder wenn du C benutzen sollst, dann mach es mit "malloc": pointer=(type*)malloc(anzahl*sizeof(type));
wenn du es dann später vergrößern möchtest: pointer=(type*)relloc(alterpointer, neue anzahl*sizeof(type));
Was du hier genaz machst, du gibst kein Array an, sondern hast lediglich einen Pointer, diesen übergibst du der "malloc" Funktion, diese wendet sich an das OS und fragt nach dem benötigten Spiecher, das OS reserviert dann Speicher in Größe deines Arrays und gibt einen Pointer auf das erste Element des Speichers zurück. Eigentlich ist ein Array ja auch nichts anderes, da ArrayName, ohne [], ein Pointer auf das erste Elemt ist.
Du solltest aufjeden Fall abfragen, ob der Pointer!=NULL, dass bedeutet, ob noch genug Speicher frei war!
Dein virtuelles Array kannst du dann über den Pointer ansprechen. Z.B. Pointer[0]

Hoffe, das es dir weiter hilft

Nachtrag:
Du solltest wenn du das Array nicht mehr benötigst free(Pointer); ausführen, da sonst der Speicher nicht wieder freigegeben wird!
 
Zuletzt bearbeitet:
Zurück