Puoi implementare una matrice bidimensionale usando un vettore dinamico di vettori dinamici. Per esempio:
Se vuoi una matrice con m righe ed n colonne, la allochi con:
Codice:
mat=(double**)malloc(m*sizeof(double*));
if (mat!=NULL)
for (i=0; i<m; i++)
mat[i]=(double*)malloc(n*sizeof(double));
e quando devi deallocarla:
Codice:
for (i=0; i<m; i++)
free(mat[i]);
free(mat);
Puoi anche fare una cosa un po' pių elaborata, usando le strutture, ad esempio:
Codice:
struct matrice {
int r,c;
double **val;
};
cosė hai pių controllo sulle operazioni che ci fai (esempio: per il prodotto, il numero delle colonne del primo fattore deve essere uguale al numero di righe del secondo).