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:
Il compilatore è contento (DevC++, Mingw).codice:int mat[3]; int* p = mat;
Se scrivo:
Si rifiuta di compilare riportando:codice:int mat[3][4]; int* p = mat;
Questo messaggio d'errore mi tornerebbe utile se riuscissi bene a intendere cosa significhi int(*)[4].18 cannot convert `int (*)[4]' to `int*' in initialization
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:
Viene, a mio avviso, giustamente compilata.codice:int mat[3][4]; int *p; p= &mat[0][0];
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;
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


Rispondi quotando