Înregistrări imbricate

  Când ne referim la înregistrări imbricate, de fapt ne gândim la o structură de tip „struct în struct”, unde practic avem definit încă un struct în interiorul primului.

  În practică, vor exista situații în care câmpurile unei înregistrări pot fi la rândul lor înregistrări. Spre exemplu, dacă vrem să memorăm date despre mai multe închirieri dintr-un parc auto, putem să construim următoarea structură.

struct inchirieriM{
  int cod, pret;
  char numeMasina[31];
  struct {
    int zi,an;
    char luna[15];
  }dataInchiriere, dataPredare;
}v[101];

inchirieriM x;

  Am declarat mai multe câmpuri corespunzătoare datelor închirierii, iar pentru data calendaristică am creat un nou struct; acesta are la rândul lui 3 câmpuri. Am declarat variabile corespunzătoare atât pentru dată, cât și un vector pentru închirieri.

Referirea la câmpurile unei înregistrări imbricate

  Dacă o luăm logic, variabilele declarate la înregistrarea din interior au la rândul lor câmpuri. Astfel, deducem următoarea formă generală:
<nume_var>.<nume_camp_struct1>.<nume_camp_struct2>

    Exemple (pentru structura declarată mai sus):
  • codul primei închirieri: v[0].cod
  • ziua închirierii înregistrării nr. 4: v[3].dataInchiriere.zi
  • luna predării înregistrării nr. 9: v[8].dataPredare.luna

 În cazul unor înregistrări imbricate, cea din interior de multe ori nu are nevoie de un identificator (nume). Un struct are nevoie de nume doar dacă va fi ulterior folosit pentru a declara variabile, mai târziu în program.