Dynamische array-Zuweisung auf stack in C

Ich habe gerade ein experiment gestern, und finde etwas verwirrend:

#include <stdio.h>

int main()
{
    int j;
    scanf("%d",&j);
    const int i = j;
    int arr[i];
    return 0;
}

Die Anzahl j ist zu Lesen von der Tastatur und es verwendet, um die Zuweisung der array - arr auf den stack.

Nicht der compiler auch wissen, die Größe des Arrays zur compile-Zeit (j initialisiert auf 0?), aber es gibt keine Kompilierungsfehler. Wie ist es möglich?

In der Tat, sollten Sie klären, warum Sie denken, sollte der compiler einen Fehler liefern,
Suche [c] VLA auf dieser Website.
ich glaube, Sie haben studiert c89 all dieser Zeit..
wie nebenbei, indem Sie durch die zusätzliche variable i nutzlos ist und der code wäre auch gut ohne.
wie C11-tag Hinzugefügt wurde, beachten Sie, dass C11 eingeführt VLAs-Unterstützung optional. __STDC_NO_VLA__ Objekt-wie makro zu 1 wenn die konkrete Umsetzung nicht mit Ihnen umgehen.

InformationsquelleAutor user3769509 | 2014-10-18

Schreibe einen Kommentar