7 Stimmen

Deklarieren eines Arrays mit einer Variablen nicht konstanter Größe

Ich lerne für meine Prüfung in C und lese in einer C-Zusammenfassung, die ich von einer Website heruntergeladen habe. Es steht geschrieben, dass es nicht erlaubt ist, zu schreiben arr[i] wobei i ist eine Variable. Der einzige Weg, dies zu tun, ist mit malloc.
Allerdings habe ich den folgenden Code geschrieben und er kompiliert ohne Warnungen und ohne Fehler auf valgrind:

int index = 5;
int a4[index];

a4[0] = 1;
a4[1] = 2;

int index2;
scanf("%d",&index2);
int a5[index2];
a5[0] = 1;
a5[1] = 2;

Was ist also die Wahrheit hinter den Array-Erklärungen? Vielen Dank!

16voto

James McNellis Punkte 337231

C99 erlaubt Arrays mit variabler Länge die auf dem Stapel erstellt werden soll. Möglicherweise unterstützt Ihr Compiler diese Funktion. Diese Funktion ist in C89 nicht verfügbar.

Was in der Zusammenfassung steht, stimmt aus einer bestimmten Sicht :-)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X