Alguien sabe como se devuelve una mariz en una funcion?

Eiii
23 de Diciembre del 2004
por ejemplo tengo la variable:

int a[5][5];

return (a);

pero como seria la cabecera de la funcion?

int** devuelveMatrix (); <- Asi no deja;

Gracias.

Noelia_Pucela
23 de Diciembre del 2004
int devuelveMatrix (int**[][5]);//Así la declaras antes del main y la 2ª dimension siempre ponerla la 1ª no hace falta
void main()
{
const int m=5,N=5;//Declaralo mejor asi
int a[m][n];//m son filas e n las columnas
...
}
int devuelveMatrix (int** matriz[][5])
{
...
}

chuidiang
23 de Diciembre del 2004
No he probado a compilar, pero creo que no hacen falta los ** si pones los corchetes

void devuelveMatriz (int matriz[][5])
{
}

No sé si lo siguiente funciona, pero puedes probar

int [][5] devuelveMatriz ()
{
}

Un pequeño detalle, si dentro de la funcion haces esto

int a[5][5];
...
return a;

a es una variable local de la funcion, cuando salgas de la funcion, a desaparece y lo que estás devolviendo tambien. Puedes obtener resultados muy extraños cuando intentes utilizar el valor.

Es mejor utilizar la primera forma y rellenar la matriz que te pasan, en vez de declararla local y hacer un return.

Se bueno.

Forastero
23 de Diciembre del 2004
Hola.
Una forma elegante sería la siguiente.

int **DevuelveMatriz (void)
{
int a[5][5]; // O el tamaño que quieras, siempre lo devolverá.
......
......
return a;
}

Un saludo.