[C con Clase] Dos formas de declarar una estructura

Salvador Pozo salvador en conclase.net
Jue Oct 11 15:13:06 CEST 2012


El pasado 2012-10-09 13:40:28, User escribió:
 
U> Hola,
U> A ver si me podéis aclarar esta duda.
U> Qué diferencia hay entre declarar una estructura de esta forma:
U> typedef struct {
U>    double x;
U>    double y;
U>    double z;
U> } coordenada;
U> y de esta otra:
U> struct coordenada {
U>    double x;
U>    double y;
U>    double z;
U> };

Hola:

Para responder a esta pregunta con precisión hay que distinguir entre C y C++.

En C la diferencia es más evidente, ya que al declarar variables de tipo struct es necesario especificar esa palabra. Por ejemplo, si usamos la segunda declaración, para declarar una variable usaremos la expresión:

struct coordenada punto1;

En cambio, usando la primera estamos definiendo un tipo nuevo, y sólo necesitamos especificar el nombre del tipo:

coordenada punto1;

Ahora bien, en C++ la palabra reservada struct es opcional en las declaraciones de variables (u objetos), de modo que ambas declaraciones son esquivalentes, y por lo tanto, también podemos usar los dos tipos de declaraciones.

En ese sentido, C++ es algo más flexible con las estructuras, aunque de hecho, internamente se tratan igual que las clases, aunque eso es otro tema...

Hasta pronto.

-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net


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