Este sitio web usa cookies de terceros para analizar el tráfico y personalizar los anuncios. Si no está de acuerdo, abandone el sitio y no siga navegando por él. ×


5.5. Estructuras

5.5.1. Definición y acceso a los datos

Un registro es una agrupación de datos, los cuales no necesariamente son del mismo tipo. Se definen con la palabra “struct”.

Para acceder a cada uno de los datos que forman el registro, tanto si queremos leer su valor como si queremos cambiarlo, se debe indicar el nombre de la variable y el del dato (o campo) separados por un punto:

/*---------------------------*/
/*  Ejemplo en C nº 50:      */
/*  C050.C                   */
/*                           */
/*  Registros (struct)       */
/*                           */
/*  Curso de C,              */
/*    Nacho Cabanes          */
/*---------------------------*/

#include 

int main()
{
  struct 
  {
    char  inicial;
    int   edad;
    float nota;
  } persona;

  persona.inicial = 'J';
  persona.edad = 20;
  persona.nota = 7.5;
  printf("La edad es %d", persona.edad);
          
  return 0;
}

Como es habitual en C, para declarar la variable hemos indicado primero el tipo de datos (struct { ...} ) y después el nombre que tendrá esa variable (persona).

También podemos declarar primero cómo van a ser nuestros registros, y más adelante definir variables de ese tipo:

/*---------------------------*/
/*  Ejemplo en C nº 51:      */
/*  C051.C                   */
/*                           */
/*  Registros (2)            */
/*                           */
/*  Curso de C,              */
/*    Nacho Cabanes          */
/*---------------------------*/

#include 

struct datosPersona 
{
  char  inicial;
  int   edad;
  float nota;
};

int main()
{
  struct datosPersona ficha;

  ficha.inicial = 'J';
  ficha.edad = 20;
  ficha.nota = 7.5;
  printf("La edad es %d", ficha.edad);
          
  return 0;
}

Ejercicios propuestos:

5.5.2. Arrays de estructuras

Hemos guardado varios datos de una persona. Se pueden almacenar los de varias personas si combinamos el uso de los “struct” con las tablas (arrays) que vimos anteriormente. Por ejemplo, si queremos guardar los datos de 100 alumnos podríamos hacer:

struct
{ 
  char inicial; 
  int edad; 
  float nota; 
} alumnos[100]; 

La inicial del primer alumno sería “alumnos[0].inicial”, y la edad del último sería “alumnos[99].edad”.

Ejercicios propuestos:

 

5.5.3. Estructuras anidadas

Podemos encontrarnos con un registo que tenga varios datos, y que a su vez ocurra que uno de esos datos esté formado por varios datos más sencillos. Para hacerlo desde C, incluiríamos un “struct” dentro de otro, así:

/*---------------------------*/
/*  Ejemplo en C nº 52:      */
/*  C052.C                   */
/*                           */
/*  Registros anidados       */
/*                           */
/*  Curso de C,              */
/*    Nacho Cabanes          */
/*---------------------------*/

#include 

struct fechaNacimiento 
{
  int  dia;
  int  mes;
  int anyo;
};

struct 
{
  char  inicial;
  struct fechaNacimiento diaDeNacimiento;
  float nota;
} persona;

int main()
{
  persona.inicial = 'I';
  persona.diaDeNacimiento.mes = 8;
  persona.nota = 7.5;
  printf("La nota es %f", persona.nota);
          
  return 0;
}

Ejercicios propuestos: