VARIABLES DE TIPO IMAGEN

VARIABLES DE TIPO IMAGEN

de Ignacio Javier Gonzalez Ubiedo -
Número de respuestas: 3

Buenas, hablando con unos compañeros me surgio una duda. ¿como defino una variable de tipo Imagen?

1) Imagen pnew;

2) Imagen *pnew;

¿como la opción 1 o la opción 2?, si es como la opción dos me gustaría saber el por qué.

En respuesta a Ignacio Javier Gonzalez Ubiedo

Re: VARIABLES DE TIPO IMAGEN

de Leopoldo Agorio -
Empecemos por la segunda: ahí estás definiendo un puntero a Imagen, y no a una imagen.  Esto queda implícito también en la notacion (empezar el nombre de la variable con una p). En el caso de esta definición, *pnew sería una variable de tipo imagen, pero con una salvedad: UNO NUNCA PUEDE ACCEDER A UN PUNTERO SIN RESERVAR MEMORIA PARA EL
Por lo que haría falta realizar un malloc.

La primer versión tiene una mala convención de nombres, precisamente porque empezar el nombre de la variable con p indica usualmente que trabajamos con un puntero (o terminarlo con p, por un anglicismo como cuando llamamos fp a los file pointers). Para evitar confusiones la llamaríamos new. Ahí new.tipo, new.filas, etc son los distintos campos de la variable imagen. En el caso 2 se debe hacer (*pnew).filas, o equivalentemente pnew->filas.

Sugiero que leas la discusión que se dio hace un tiempo acá: