Discussione: [C]Matrici trasposte
View Single Post
Old 15-08-2010, 09:37   #4
kwb
Senior Member
 
L'Avatar di kwb
 
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
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` Guarda i messaggi
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.
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
kwb è offline   Rispondi citando il messaggio o parte di esso