Deklarieren eines Arrays mit einer nicht konstanten Größenvariablen [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Welchen Compiler soll ich vertrauen? 4 Antworten

Ich lerne für meinen Test in C und lese in einer C-Zusammenfassung, die ich von einer Website heruntergeladen habe. Es steht geschrieben, dass es nicht erlaubt ist @ zu schreibarr[i] woi ist eine Variable. Die einzige Möglichkeit, dies zu tun, ist malloc.
Ich habe jedoch den folgenden Code geschrieben und er wird ohne Warnungen und ohne Fehler auf valgrind kompiliert:

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;

Also, was ist die Wahrheit hinter Array-Deklarationen? Danke

Antworten auf die Frage(2)

Ihre Antwort auf die Frage