Quote:
Originariamente inviato da wingman87
La matrice qui è indirizzata tramite un doppio puntatore, se vuoi allocarla in una funzione diversa devi passare l'indirizzo del doppio puntatore, altrimenti le modifiche effettuate su di esso non saranno visibili all'esterno (per via del passaggio di parametri per copia), quindi nella funzione lavorerai con un triplo puntatore.
Codice:
int **matrix;
allocaMatrice(&matrix);
...
void allocaMatrice(int ***mat){
*mat=(int**)calloc...
...
}
|
Ma c'è modo di allocarla in modo differente? Perchè nell'esempio dell'esercizio la matrice viene allocata con un doppio puntatore ma dentro il main...
Quote:
Originariamente inviato da tuccio`
oppure più semplicemente invece di ritornare un int **
tipo:
int** allocate_memory(int rows, int cols);
poi non hai allocato nemmeno la trasposta (e mancano tutte le free)
|
Non mi è mai stato spiegato come si usano i puntatori a funzione, che è quello che mi sembra tu abbia fatto

Comunque si lo so che mancano un paio di cose, ma i dettagli li aggiungo quando il programma almeno termina l'esecuzione correttamente.