antragorn ha scritto:
Conosco l'aritmetica dei puntatori (sebbene non credo di "padroneggiarla") ma cmq non capisco cosa significhi printf("%2d ", * (matrice + i * colonne + j)); Mi confonde il doppio segno * . Non capisco! Per me un puntatore è tipo int * sPtr;
il doppio segno * confondeva anche me, quando tanti ma tanti anni fa ho studiato 'C'
il primo, diciamo così "a vuoto" significa "il puntato da....." ovvero de-referenzia un puntatore
il secondo, all'interno di una formula, è la semplice moltiplicazione
all'inizio anch'io avevo difficoltà a "riconoscerli" tra di loro
ma con un po' di abitudine diventa più facile
mettiamo che debbo leggere l'intero alla riga 3, colonna 2 di un array di 4 colonne
sarebbe array[3][2], scritto come array
scritto come puntatore:
io prendo un puntatore (il nome dell'array)
gli sommo tante colonne quanto è la riga da leggere ovvero 4 * 3 (leggasi 4 per 3, non 4 puntatore 3) che fa 12
gli sommo ancora la colonna da leggere ovvero 2
e quindi il puntatore punta adesso all'oggetto di posto 14 (che viene da 12+2)
e infatti se fai il conto diciamo così "sulle dita"
la prima riga occupa gli oggetti da 0 a 3 (4 oggetti su 4 colonne)
la seconda riga occupa gli oggetti da 4 a 7
la terza gli oggetti da 8 a 11
la quarta gli oggetti da 11 a 13
dei quali il terzo è quello di colonna 2 (ti ricordo che in C gli indici cominciano da 0, quindi riga 3 è la quarta e colonna 2 è la terza)
ovvero array[3][2] per un array di 4 colonne è il terzo oggetto della quarta riga ovvero il 14dicesimo
e quindi il "puntato" da "puntatore + 14"
tranquillo che col tempo ti viene automatico.........