Ver Mensaje Individual
  #3 (permalink)  
Antiguo 13/04/2013, 13:28
amchacon
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Respuesta: [C++] Como retornar arreglo bidimencional?

Cita:
Iniciado por jariza Ver Mensaje
¿una variable static declarada dentro de una función no es local a esta? Creo que se destruiría al finalizar la función
No, precisamente la característica de las variables estáticas es que sus valores persisten después de finalizar la función.

No se pueden retonar variables bidimensional (ni unidimensional). Lo que tienes que hacer es copiar esos valores a otra variable bidimensional. Te lo explico con un ejemplo:

Código:
void Maps::cargarMapa (int Matriz[][]) {

	int mapa [FILAS_MAPA][COLUMNAS_MAPA] = {
		0,0,12,12,12,12,12,12,12,12,0,0,
		0,0,24,24,24,24,24,24,24,24,0,0,
		0,0,12,12,12,12,12,12,12,12,0,0,
		0,0,24,24,24,24,24,24,24,24,0,0,
		0,25,25,25,25,25,25,25,25,25,25,0,
		0,36,48,48,48,48,48,48,48,48,36,0,
		0,0,36,48,48,48,48,48,48,36,0,0,
		0,0,0,36,48,48,48,48,36,0,0,0,
		0,0,0,0,36,48,48,36,0,0,0,0,
		0,0,0,0,0,37,37,0,0,0,0,0
};

		int i;
		int j;

		for (i = 0; i < FILAS_MAPA; i++) {		  // Largo
			for (j = 0; j < COLUMNAS_MAPA; j++) { // Ancho
				Matriz = mapa[j][i];
			}
		}


}
Esto si funcionaría, al llamar la función se rellenaria:

Código:
int Matriz[FILAS_MAPA][COLUMNAS_MAPA];
cargarMapa(Matriz); 

// Matriz ya esta rellena