salve, avrei bisogno di una spiegazione sulle linee di codice della parte dell'allocazione della matrice:

int **matrice;
..
..

//allocazione matrice

matrice = (int**) malloc (righe*sizeof(int *)); //perchè si mette il puntatore qui (int *) ?

for(r=0;r<righe;r++)

matrice[r] = (int*) malloc(colonne*sizeof(int));

//qui invece si usa (int*) perchè allochiamo per righe giusto? e dopo perchè size of(int) non ha bisogno di puntatore?