Para definir arrays de dos dimensiones, es en realidad un array de UNA dimension de punteros.
Digamos que tienes array dinamico de 6 posiciones
array_dinamico1:
|__|__|__|__|__|__|__|
0 1 2 3 4 5 6
Si queremos hacer una matriz dinámica, entonces cada elemento del array dinamico es a su vez otro array dinamico.
matriz_dinamica1:
|_0_|_0_|_0_|_0_|_0_|_0_|_0_| ...... |_i__|
|_1_|_1_|_1_|_1_|_1_|_1_|_1_| ...... |_i+1|
|_._|_._|_._|_._|_._|_._|_._|_._| ...... |_...._|
|_._|_._|_._|_._|_._|_._|_._|_._| ...... |_...._|
|_._|_._|_._|_._|_._|_._|_._|_._| ...... |_...._|
|_j_|_j_|_j_|_j_|_j_|_j_|_j_|_j_| ...... |_i+j_|
Espero que mi dibujo sea claro, porque me tarde haciendolo :P
Entonces para una matriz de i-filas y j-columnas, tenemos
Código C:
Ver originalint **matriz;
int filas_dinamicas;
int columnas_dinamicas;
matriz
= (int**) malloc(filas_dinamicas
*sizeof(int));int i =0;
for(i=0;i<filas_dinamicas;i++)
{
matriz
[i
] = (int**)malloc(columnas_dinamicas
*sizeof(int));}
para liberarlo es:
Osea que primero liberamos las columnas ( o los vectores dinamicos que creamos despues) y despues liberamos al primer vector dinamico que creamos....
De verdad te recomiendo primero que te eches una leída al tema de puntero, es muchisimo mas claro ya cuando entiendes exactamente como se manejan los punteros
Y ahora solo a manera de nota, eso es código para C, cuando estas trabajando con C++ es muchisimo mas rápido y eficiente utilizar new y delete