4. Struktury

W języku C++ struktury (ang. structures) są typem złożonym, który pozwala na grupowanie różnych typów danych w jedną jednostkę. 

Struktura, czyli typ rekordowy,  służy w C++  do powiązania ze sobą wielu pól danych dowolnego typu.
Możliwe jest więc zdefiniowanie struktury, która będzie zawierała pola różnych typów, które są przeznaczone do przechowywania różnych informacji. Poniżej przedstawiono przykładową implementację struktury zawierającej dwa pola.
struct NazwaStruktury {
    typDanych1 pole1;
    typDanych2 pole2;
    // inne pola
};
Należy pamiętać, aby definicję struktury zakończyć średnikiem.
Po zdefiniowaniu struktury możemy za pomocą jej nazwy zdefiniować zmienną tego typu. Odwołanie do pól struktury odbywa się za pomocą kropki umieszczonej za nazwą zmiennej. Po kropce mamy dostęp do wszystkich zdefiniowanych pól w strukturze. Poniżej przedsatwiono prosty przykład aplikacji w której zdefiniowano strukturę przechowującą dane osoby. Następnie w kodzie aplikacji przedstawiony jest sposób odwołania do poszczególnych pól struktury.
#include <iostream>

struct Osoba {
    std::string imie;
    int wiek;
    float waga;
};

int main() {
    // Inicjalizacja struktury
    Osoba osoba1;
    osoba1.imie = "Jan";
    osoba1.wiek = 30;
    osoba1.waga = 75.5;

    // Dostęp do pól struktury
    std::cout << "Imię: " << osoba1.imie << std::endl;
    std::cout << "Wiek: " << osoba1.wiek << std::endl;
    std::cout << "Waga: " << osoba1.waga << std::endl;

    return 0;
}
W powyższym przykładzie Osoba to struktura zawierająca trzy pola: imie (typ std::string), wiek (typ int) i waga (typ float). W funkcji main tworzony jest obiekt osoba1, a następnie przypisywane są wartości do pól tej struktury.

  Każde pole danej struktury musi mieć w jego obrębie unikalną nazwę - co oznacza, że pomiędzy nawiasami klamrowymi po słowie struct nie może znaleźć się dwa razy ta sama nazwa. Struktury należy wczytywać i drukować odwołując się do kolejnych pól. Nie wolno tych operacji wykonywać na całych rekordach. Rekordy można na siebie kopiować w całości, poprzez instrukcję przypisania (nie trzeba kopiować pola za polem).

W strukturach można umieszczać inne struktury, co pozwala na tworzenie bardziej złożonych typów danych.
struct Data {
    int dzien;
    int miesiac;
    int rok;
};

struct Student {
    std::string imie;
    std::string nazwisko;
    Data dataUrodzenia; // zagnieżdżona struktura
};<br>