2016-11-11 2 views
0

Was passiert eigentlich, wenn Sie beispielsweise ein Array mit leeren Grenzen vom Typ int deklarieren? Wie verwaltet Ihr Computer den Speicher, der diesem bestimmten leeren Array zugewiesen ist?Was passiert, wenn Sie ein Array mit leeren Grenzen deklarieren?

int A[]; 
+0

Mögliches Duplikat von [Was passiert, wenn ich in C/C++ ein 0-Array definiere?] (Http://stackoverflow.com/questions/9722632/what-happens-if-i-define-a-0- size-array-in-cc) - edit: vielleicht nicht so speicherbezogen. – Marvin

+3

'int A [];' ist keine gültige Deklaration in C. Der Compiler sollte eine Diagnosemeldung ausgeben. –

+0

@ n.m. Es ist als Strukturelement für C99 und später gültig – kdopen

Antwort

0

Innerhalb eines Funktionskörpers ist int A[]; eine Constraint-Verletzung.

Außerhalb einer Funktion wird eine Variablendefinition ohne Initialisierer als vorläufige Definition bezeichnet. Dieser definiert, dass A ein Array von int unbekannter Bindung ist. Der Typ A ist ein unvollständiger Typ, weil die Grenze noch nicht bekannt ist. Es kann später zu ergänzen:

int A[]; 

void f() 
{ 
    A[0] = 1; 
} 

int A[5]; 

Wenn die letztere Definition weggelassen wird, verhält sich das Programm als ob die Quelldatei int A[1]; am Ende hatte.

Verwandte Themen