2016-05-18 11 views
2

ein Geben Sie einen Basissatz von C-Code:Variablenliste Feldinitialisierung in C erklärt

int a = 5; 
int b[a] = {1,2,3,4,5}; 

Warum dies diesen Fehler generiert?

Ich verstehe, dass es eine schlechte Sache zu tun ist und der Compiler wird Sie nicht lassen. Allerdings fällt es mir als Lehrer schwer zu erklären, warum man das nicht tun kann und sollte.

(Angenommen, C99)

Wie würden Sie erklären, was hier geschieht?

+0

Weil Variablen Variablen sind - sie können sich jederzeit im Programm ändern. –

+3

@CinCout C unterstützt VLA. Aber unterstützt nicht die Initialisierung solcher Arrays mit Klammern Initialisierungsliste. –

+0

@MohitJain, ja. Aber warum? –

Antwort

1

Warum generiert dies diesen Fehler?

C-Standard erlaubt dies nicht. Arrays mit variabler Länge können nicht mithilfe einer in Klammern eingeschlossenen Liste von Initialisierern initialisiert werden.

Norm sagt:
C11-§6.7.9/3:

Die Art des Unternehmens initialisiert werden soll, muß eine Reihe von unbekannter Größe oder einem kompletten Objekttyp sein, der nicht mit variabler Länge ist Array-Typ.

+0

aber warum? Gibt es einen dokumentierten Grund dafür? –

Verwandte Themen