View Full Version : [C] domandina sui punatori
D4rkAng3l
24-04-2006, 11:42
Data una matrice (ad esempio int a[3][5]; ) perchè:
*(a[i] + j) corrisponde a a[i][j] ?
Grazie
Andrea
Ziosilvio
24-04-2006, 11:49
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].
Fenomeno85
24-04-2006, 11:52
Data una matrice (ad esempio int a[3][5];) perchè:
*(a[i] + j) corrisponde a a[i][j] ?
Grazie
Andrea
edit
~§~ Sempre E Solo Lei ~§~
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.