2010-03-29 9 views
5

erhalte ich die Fehlermeldung „intitializer fails to determine size of 'K'“ in ZeileFehler: initializer versagt Größe von ‚K‘ bestimmen

int K[]= new int[Vertices->total]; 

Wie kann ich es lösen?

+3

Sie müssen entscheiden, ob Sie in 'C sind die Programmierung ++' oder ' C, und, wenn es das letztere ist, ob Sie 'C99' verwenden oder nicht. –

+1

Lousy Fehlermeldung. Welchen Compiler benutzen Sie? –

+1

@nobugz Eigentlich denke ich, das ist eine sinnvolle Fehlermeldung. –

Antwort

18

ändern

int K[]= new int[Vertices->total]; 

zu

int *K = new int[Vertices->total]; 

1. Die eine ist die Java Weise eine Anordnung zu schaffen, in dem Sie K eine Referenz auf einen Integer-Array ist. Aber in C++ müssen wir K einen Zeiger auf Integer-Typ machen.

+0

Thankx funktioniert, aber kann ich das gleiche K verwenden, um Arrays zu speichern – smile

+1

@shiva Fast. Arrays in c sind wirklich nur Zeiger auf Speicherblöcke. Wenn Sie also K verwenden möchten, um ein Array mit einem Array von Integer zu manipulieren, lautet die Deklaration: int K ** = new int * [ ' – sum1stolemyname

3

new int[Vertices->total] gibt einen Zeiger zurück und daher sollte int *K = new int[Vertices->total]; gut funktionieren.

Wenn Sie die Größe von Vertices->total bei der Kompilierung (dh CONSTANT) kennen, dann können Sie verwendet haben int K[Vertices->total]; // Ordnet den Speicher auf dem Stapel

Verwandte Themen