Array grösse durch variable?

Hallou

Soweit ich weiss ist die grösse eines Arrays konstant. Aber ich kann sie doch durch eine variable bestimmen lassen, oder? Also z.B. so (Ich red von C++):

Code:
int a;
cin>>a;
int array[a];

oder? Ich hab grad gelesen das das nicht gehen soll, aber mein compiler (Dev-cpp 4) meckerts nicht an!

Da fällt mir ein das die grösse eines arrays doch beliebig ist wenn man sowas macht, oder? :

Code:
int a[] ={};

oder geht das nur mit chars (Also dann strings [ char a[] =" " ]) ?!?

Danke
 
Original von SuperSkater
Hallou

Soweit ich weiss ist die grösse eines Arrays konstant. Aber ich kann sie doch durch eine variable bestimmen lassen, oder? Also z.B. so (Ich red von C++):
Da ein Array erstmal nichts anderes ist als ein Pointer auf das erste Element des Arrays, kann man das nicht so pauschal sagen. Ein Array ist deswegen NACH seiner Zuweisung "fest", weil entsprechend viel Speicher dafür allokiert werden muss und sich dieser Bereich nicht so einfach vergrössern lässt.
Im obigen Fall ist das kein Problem, das Array wird erst NACH der Eingabe der Zahl allokiert.
Das Array hat aber keine Schranken deswegen kannst du auch auf Elemente ausserhalb des allokierten Bereiches zugreifen, meinetwegen:
Code:
int array[3];
cout << array[3] << array[4] << endl;
Ist übrigens identisch mit:
Code:
int* array = new int[3];
cout << array[3] << array[4] << endl;
Das Problem ist ja auch nicht das einmalige allokieren sondern eben normalerweise das dynamische vergrössern...
Dazu gibt es die "alten" C-Funktionen alloc und realloc, zu dem Thema siehe auch:

http://www.cplusplus.com/doc/tutorial/tut3-4.html
http://www.synnottsoftware.com/tutorials/pointers.php
http://www.functionx.com/cpp/Lesson13.htm
http://www.google.com

***Edit***:

Nachtrag: Wenn man mit C++ arbeiten möchte gibt es für solche Fälle u.a. die Datenstruktor "Vector" aus der STL, welche einem das dynamische Vergrössern/Verkleinern abnimmt....
 
Zurück
Oben