Como regresar una matriz en una funcion
Mi duda es que tipo de dato tiene que ir en el encabezado de una funcion para poder obligar que la funcion regrese una matriz de 2 dimensiones. Tenia pensado utilizar:
int * * prueba(){
int m[2][2];
return m;
}
Pero me marca un error a la hora de regresar m. Que puedo hacer?
int * * prueba(){
int m[2][2];
return m;
}
Pero me marca un error a la hora de regresar m. Que puedo hacer?
Hola:
int[2][2] y int ** son tipos distintos, aunque representen más o menos lo mismo. Una forma es hacer esto
int ** prueba()
{
int **m;
m = new int * [2];
for (int i=0;i<2;i++)
m[i] = new int[2];
...
return m;
}
Luego, alguien tendrá fuera que liberar la memoria, haciendo lo mismo pero al revés, es decir, primero liberara los m[i] y luego m.
Aparte del error que te da, no es buena idea declarar el array local y luego devolverlo. Al ser el array local, cuando termine la función el array desaparece. EstarÃas devolviendo un puntero a una zona de memoria que ha sido liberarda y tendrÃas problemas más adelante.
Puedes echar un ojo en http://www.geocities.com/chuidiang/funciones/punteros.html para ver este tipo de errores tÃpicos.
Si no te gusta lo de crear el array dentro y tener que liberarlo fuera, puedes pasar el array como parámetro y que la función simplemente te lo rellene con los datos que sea.
Se bueno.
int[2][2] y int ** son tipos distintos, aunque representen más o menos lo mismo. Una forma es hacer esto
int ** prueba()
{
int **m;
m = new int * [2];
for (int i=0;i<2;i++)
m[i] = new int[2];
...
return m;
}
Luego, alguien tendrá fuera que liberar la memoria, haciendo lo mismo pero al revés, es decir, primero liberara los m[i] y luego m.
Aparte del error que te da, no es buena idea declarar el array local y luego devolverlo. Al ser el array local, cuando termine la función el array desaparece. EstarÃas devolviendo un puntero a una zona de memoria que ha sido liberarda y tendrÃas problemas más adelante.
Puedes echar un ojo en http://www.geocities.com/chuidiang/funciones/punteros.html para ver este tipo de errores tÃpicos.
Si no te gusta lo de crear el array dentro y tener que liberarlo fuera, puedes pasar el array como parámetro y que la función simplemente te lo rellene con los datos que sea.
Se bueno.