Estructuras

Conceptos Generales

Es una colección de variables del mismo o distinto tipo que se referencia bajo un único nombre, proporcionando un medio eficaz de mantener junta la información relacionada.

La definición de una estructura se realiza de la siguiente manera:

struct  nombre {

    lista de variables

    };

Donde struct es la palabra clave que indica al compilador que se va a definir una estructura, nombre es el identificador de la estructura, y en lista de variables es donde se declaran las variables que van a componer esa estructura.

 Ejemplo. De definición de una estructura.

 

struct complejo {

  double real;

  double imag;

  };

 

Definida la estructura se pueden declarar variables de este tipo. Hay varias maneras de realizar esto:

 

Tanto la asignación de valor, como el acceso al asignado a cada variable de la estructura se hace de la siguiente manera: variable.miembro. Donde variable es el nombre de la variable declarada como de algún tipo de estructura y miembro es cualquiera de las variables declaradas en el cuerpo de la definición de la estructura (lista de variables).

Ejemplo_Estr_1. De definición de una estructura, declaración de variables de ese tipo y acceso a sus miembros.

 

// Usando la forma 1 de declarar una variable de tipo estructura

struct complejo {

  double real;

  double imag;

  } z;

z.real = 1.2;

z.imag = 3.4;

printf("Parte real: %f. Parte imaginaria: %f\n", z.real, z.imag);

 

// Usando la forma 2 de declarar una variable de tipo estructura

struct complejo {

  double real;

  double imag;

  };

struct complejo z;

z.real = 1.2;

z.imag = 3.4;

printf("Parte real: %f. Parte imaginaria: %f\n", z.real, z.imag);

 

// Usando la forma 3 de declarar una variable de tipo estructura

typedef struct {

  double real;

  double imag;

  } complejo;

complejo z;

z.real = 1.2;

z.imag = 3.4;

printf("Parte real: %f. Parte imaginaria: %f\n", z.real, z.imag);

 

Punteros a estructuras

Como con cualquiera de los tipos de variables vistas se pueden declarar punteros a estructuras. En este caso el acceso a los miembros de la estructura apuntada se realiza de la siguiente manera: puntero_estructura->miembro.

Ejemplo_Estr_2. De uso de punteros a estructura

typedef struct {

  double real;

  double imag;

} complejo;

complejo z, *t;

t=&z;

t->real = 1.0; 

t->imag = 2.1;

printf("Parte real: %f. Parte imaginaria: %f\n", z.real, z.imag); //Usando la variable z

printf("Parte real: %f. Parte imaginaria: %f\n", t->real, t->imag); //Usando el puntero t