PDA

Visualizza la versione completa : [C++] Puntatori e matrici


robott
25-01-2010, 12:08
Salve :)

il problema che vi sottopongo riguarda i puntatori e le matrici, niente di complesso ma i conti non tornano.

Se scrivo come codice prova:


int mat[3];

int* p = mat;



Il compilatore contento (DevC++, Mingw).

Se scrivo:



int mat[3][4];

int* p = mat;



Si rifiuta di compilare riportando:


18 cannot convert `int (*)[4]' to `int*' in initialization

Questo messaggio d'errore mi tornerebbe utile se riuscissi bene a intendere cosa significhi int(*)[4].

Io mi aspettavo che come nel caso dell'array monodimensionale il nome non altro che un puntatore anche nel caso di array multidimensionale il nome non fosse altro che un puntatore.

Inoltre la scrittura:


int mat[3][4];
int *p;
p= &mat[0][0];

Viene, a mio avviso, giustamente compilata.
Ecco, io pensavo ma il compilatore mi smentisce e per questo vorrei delucidazioni, che l'ultima scrittura e quella sopra scritta fossero equivalenti, cio:

p=&mat[0][0] equ. a p = mat;


:ciauz:


PS: Ho pensato e il compilatore mi ha confermato che la scrittura p=mat[0] corretta che non altro che il puntatore dal primo elemento della prima riga, anche se personalmente non avrei mal visto la scrittura p=mat; che facesse puntare anch'essa al primo elemento

Loading