Strukturalne typy danych

Poznane wcześniej tablice mogą zawierać wiele danych, ale wszystkie te dane muszą być tego samego typu. Dla zgrupowania powiązanych ze sobą logicznie danych różnego typu C/C++ stosuje STRUKTURY, deklarowane przy pomocy słowa struct. Kolejne pola struktury są umieszczane w pamięci zgodnie z kolejnością ich deklarowania. Strukturę, podobnie jak zmienną, MUSIMY ZADEKLAROWAĆ. Struktura jest objektem bardziej złożonym niż pojedyncza zmienna, więc i deklaracja struktury jest bardziej skomplikowana. Deklaracja struktury składa się z następujących elementów:

  1. Słowo kluczowe struct (obowiązkowe).
  2. Nazwa (opcjonalna). Jeśli podamy nazwę, to nazwa ta będzie oznaczać dany typ struktury.
  3. Nawias klamrowy {
  4. Deklaracje kolejnych składników struktury.
  5. Nawias klamrowy }
  6. Lista nazw struktur określonego powyżej typu (może zostać zadeklarowana oddzielnie). Przykład. Deklaracja ogólnego typu struktury i określenie wewnętrznej postaci struktury.
     struct Ludzie   
    {  
    char Imiona[30];  
    char Nazwisko[20];  
    int wiek;  
    char pokrewienstwo[10]  
    };  
    

    Tablice struktur

    Tablicę struktur tworzymy i owołujemy się w ten sam sposób co zwykłe tablice prostych zmiennych.

    nazwa_struktury nazwa_tablicy [liczba_elementów];

    
    
    
    //  Definicja struktury    
    
    
    #include <math.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <conio.h>
    #include <iomanip>
    #include <iostream>
    
    
    using namespace std;
    
    struct punkty{
      int x, y;
      char nazwa;
    };
     
    int main()
    {
      punkty tab[1000];
     
      //przypisanie wartosci do pierwszej komórki tablicy
      tab[0].x = 2;
      tab[0].y = 4;
      tab[0].nazwa = 'A';
     
      //przypisanie do ostatniej komórki tablicy
      tab[999].x = 1;
      tab[999].y = 5;
      tab[999].nazwa = 'X';
     
      //odwoływanie się do elementów tablicy
      cout << "Dane pierwszego punktu: " << tab[0].x <<" "
      << tab[0].y << " "  << tab[0].nazwa << endl;
     
      system("pause");
     
      return 0;
    }
    }
    
    

    Tablice możemy tworzyć także bezpośrednio po deklaracji i definicji struktury, np.:

    
    struct punkty{
      int x, y;
      char nazwa;
    }tab[1000];