View Single Post
Old 24-04-2006, 11:49   #2
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16211
Quote:
Originariamente inviato da D4rkAng3l
Data una matrice (ad esempio int a[3][5] perchè:

*(a[i] + j) corrisponde a a[i][j] ?
Cominciamo dall'inizio: a è un array di array di int.
Di conseguenza, a[i] è un array di int.
Nell'espressione "a[i]+j", j è un int, e a[i] viene convertito a un puntatore ad int, il cui valore è l'indirizzo dell'elemento di indice 0 dell'array a[i], ossia a[i][0].
Ma allora, il valore dell'espressione "a[i]+j", è l'indirizzo dell'elemento di indice j dell'array a[i] (in un array, gli elementi successivi sono consecutivi), e l'espressione in sé è di tipo puntatore a int.
Pertanto, quando applichi l'operatore di dereferenziazione all'oggetto a[i]+j, ottieni il valore contenuto nella locazione di memoria corrispondente all'elemento di indice j dell'array a[i]: e tale valore è proprio a[i][j].
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso