PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C: Typ von Int[][]



peschmae
28-01-2005, 08:58
int field[3][3];
int* f = field;


da meckert bei mir gcc -Wall. Was von Zuweisung von inkompatiblem Pointertyp. Funktionieren tuts natürlich trotzdem, aber irgendwie störts.



int* f = (int*)field;


bringt -Wall zum schweigen. Aber irgendwie ist mir die Sache noch nicht ganz klar. Ist nicht field vom Typ int*?

MfG Peschmä, der heute damit (erfolglos) drei Informatikassistenten beschäftigt hat

wraith
28-01-2005, 09:06
Die Regel dafür ist immer die gleiche: ein Array degeneriert in einen Zeiger auf das erste Element (Achtung die Regel wird nicht rekursiv angewendet).
Hier ist field ein Array von "Arrays von 3 int".Also brauchst du einen Zeiger auf ein Array von 3 int.


int field[3][3];
int (*p)[3] = field;

Wenn du deinen int *p; behalten willst


int field[3][3];
int *p = &field[0][0];

peschmae
28-01-2005, 16:25
Ah. Ok. Alles klar. Das heisst ein


int *p = field[0];


ist auch korrekt.

MfG Peschmä