Logo

¡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.
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.