Matriz dinamica
¿Como puedo declarar una matriz dinamica? se puede? y pasarla como parámetro a funciones?
Una matriz en C o C++ es por exelencia un puntero a puntero a puntero a puntero... asi cuantas dimenciones tenga el array. Como supongo que no vas a trabajar con arreglos de mas de 3 dimenciones (alli las coas se empiezan a poner espesas hasta para los matematicos jejeje) te dire como declarar y crear un array de doso y tres dimenciones:
Para dos:
Se declara un puntero a punteros (del tipo de datos, por ejemplo un int)
int **pap;
y para crear la matriz asi:
int i;
pap = (int*) malloc(sizeof(int*) * n);
// donde n es la dimencion primera del arreglo.
for (i00; i<n; i++) // creamos las otras dimenciones
pap[i] = (int*) malloc(sizeof(int)*m);
Asi tenes un arreglo dinamico de dimenciones n por m.
CUIDADO, WARNING, GUARDA:
puede que se te agote la memoria mientras estas reservando con malloc te recomiendo comprovar que nunca el resultado de malloc es NUL (0) y si lo es parar porque... se te acabo la ram y eso es muy pero muy... corrijo ES GRABISIMO.
En cuanto al uso de estos arreglos no tiene nada de especial porque ASI los trata C en la realidad solo que son estaticos...
Saludos.
Para dos:
Se declara un puntero a punteros (del tipo de datos, por ejemplo un int)
int **pap;
y para crear la matriz asi:
int i;
pap = (int*) malloc(sizeof(int*) * n);
// donde n es la dimencion primera del arreglo.
for (i00; i<n; i++) // creamos las otras dimenciones
pap[i] = (int*) malloc(sizeof(int)*m);
Asi tenes un arreglo dinamico de dimenciones n por m.
CUIDADO, WARNING, GUARDA:
puede que se te agote la memoria mientras estas reservando con malloc te recomiendo comprovar que nunca el resultado de malloc es NUL (0) y si lo es parar porque... se te acabo la ram y eso es muy pero muy... corrijo ES GRABISIMO.
En cuanto al uso de estos arreglos no tiene nada de especial porque ASI los trata C en la realidad solo que son estaticos...
Saludos.
