[C con Clase] POINT ó POINTS de WinApi

Salvador Pozo salvador en conclase.net
Lun Nov 20 11:58:39 CET 2006


El pasado 2006-11-20 14:43:54, Abel escribió:
 
A> Hola a todos,
A>   tengo las siguientes preguntas: 
A>   -Cuándo usamos POINT y cuándo POINTS?, me fije que ambas estructuras son idénticas, aparte de que sus variables tienen distintos tipos, pero no le veo el objetivo final.

El uso de una estructura u otra depende de para qué se usen esos datos. Hay funciones del API que trabajan con estructuras POINT (enteros largos), y otras que lo hacen con estructuras POINTS (enteros cortos).

Para tu uso particular, depende de ti, o más bien, del problema que estés tratando. Si necesitas números grandes, en el rango de enteros largos, usa POINT, en caso contrario, usa el que prefieras.

A>   -Mi siguiente pregunta:
A>   escribí un programa con las siguientes variables:
A>   short int objetoX[10];
A>   short int objetoY[10];
A>   ahora me doy cuenta que lo hubiera hecho de esta forma:
A>   POINT objeto[10];
A>   qué ventaja me traería la una ó la otra, aparte de que con la segunda solo necesito declarar una sola variable?

Para mi, la ventaja de la segunda es que tratamos cada punto como una entidad, es más sencillo usar esos puntos con funciones que en su lista de parámetros tengan una estructura POINT, y no añadimos complicaciones en otros casos.

También es más claro el código, ya que es más evidente que estamos pasando una coordenada y no dos enteros (que no siempre sabemos qué significan).

En lo que respecta al almacenamiento, en el primer caso se almacenan en direcciones de memoria contiguas todas las coordenadas X, y después todas las coordenadas Y. En el segundo caso, lo que se almacena de forma contigua son parejas de coordenadas X,Y. Para una función que tenga que recorrer listas de coodenadas es más sencillo trabajar con la segunda opción, ya que es sencillo calcular la posición de memoria de una coordenada Y que corresponda con determinada coordenada X, sobre todo sin saber cuantas coordenadas hay.

Pero como en todo, esto es un tema que se puede discutir. En ciertas circunstancias a lo mejor es preferible la primera opción.

Hasta pronto.
-- 
Salvador Pozo
mailto:salvador en conclase.net


Más información sobre la lista de distribución Cconclase