Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





El array viajero q no llega

Iniciado por Antares, 23 de Febrero de 2003, 09:14:45 PM

« anterior - próximo »

Antares

                                El problema q tengo es q mi proyecto por ser el primero ya ocupa muchos recursos asi q llego la hora de liberar memoria cuando el programa esta descansando :)

Asi pues tengo un array bidimensional y no consigo pasarlo entre las funciones, lo he intentado con punteros pq no consigo q la funcion me devuelva un array pero no me llega entero.

¿Como he de proceder para pasar arrays entre funciones?

Antares                                

Juan Mellado

                                ¡Hola!,
ayudaría que dijeras en que entorno y lenguaje estas trabajando.  :loco:

Voy a suponer que es C:
char a[10][10]; //Array bidimensional



void f(char (* a)[10][10])  //Función que admite un puntero al array

{

...

}



f(&a);  //Forma de llamar a la función



Para evitar escribir tanto puedes declarar un tipo:


typedef char (* PTR)[10][10];



También puedes definir los parámetros como void *, sobre todo si el tamaño de los arrays es variable, y luego hacer un casting al tipo adecuado.

Saludos                                

Antares

                                Pozi, tienes razon uso Visual c++ 6.0

¿Y para que la funcion devuelva el array?                                

Juan Mellado

Citar
Compiler Error C2090
function returns array
A function cannot return an array. It can return a pointer to an array.

No puedes devolver un array. Pero sí un puntero a un array.

Más o menos así:



typedef char (* PTR)[2][2];



PTR f()

{

   static char m[2][2] = { {'a', 'b'}, {'1', '2'} };



   return(&m);

}



main()

{

   PTR a = f();



   printf("[0][0]=%cn", (*a)[0][0]);

   printf("[0][1]=%cn", (*a)[0][1]);

   printf("[1][0]=%cn", (*a)[1][0]);

   printf("[1][1]=%cn", (*a)[1][1]);

}



Espero te sirva.
Saludos






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.