Organizacja danych
Jeśli próbowałeś już pisać jakąś bazę danych, np. przechowującą kontakty telefoniczne do różnych osób to zauważyłeś pewnie, że szukanie nazw tablic i posługiwanie się wieloma tablicami dla jednej osoby nie jest wygodne. Z pomocą przychodzą tu 
struktury, które pozwalają na zorganizowanie danych w wygodniejszy sposób. 
Struktury potrafią przechowywać różne typy danych. Deklaracja 
struktury wygląda następująco: 
struct Uzytkownicy_DDT 
{ 
    std::string nik;
    std::string haslo;
    short data_zalozenia_konta;
    std: string status;
};
Elementy charakteryzujące ten typ danych to:
? słowo kluczowe 
struct, które informuje kompilator, że będzie definiowana struktura,
? opis struktury opisujący zawartość struktury,
? jest to najprostsza postać klasy.
W przykładzie został wykorzystana 
biblioteka string, zapoznaj się z nią nim przejdziesz do analizy kursu!
Wykorzystanie struktury w praktyce
Ponieważ wiemy już jak utworzyć własny, bardziej złożony typ danych to dobrze by było, gdybyśmy teraz wiedzieli jak go możemy wykorzystać. Zmienną deklarujemy tak samo, jak w przypadku standardowych typów danych.
#include <iostream>
#include <string>
#include <conio.h>
struct Uzytkownicy_DDT 
{
    
    std::string nik;
    std::string haslo;
    short lp;
    std::string status;
    std::string rodzaj_konta;
};
int main()
{
    using namespace std;
    
    Uzytkownicy_DDT PiotrSzawdynski =
    {
        "PiotrSzawdynski",
        "!@#$%%^",
        1,
        "Aktywny",
        "Admin"
    };
    
    
    Uzytkownicy_DDT Pietrzuch =
    {
        "Pietrzuch",
        "@m@m$@#@",
        24,
        "Aktywny",
        "Moderator"
    };
    
    
    
    Uzytkownicy_DDT Piotrus_Pan;
    
    
    Piotrus_Pan.haslo = "PanPiotr";
    Piotrus_Pan.lp = 927;
    Piotrus_Pan.nik = "Piotrus_Pan";
    Piotrus_Pan.rodzaj_konta = "Uzytkownik";
    Piotrus_Pan.status = "zablokowany";
    
    
    cout << "Oto lista uzytkownikow forum DDT"
    << endl << "Nik " << PiotrSzawdynski.nik
    << endl << "haslo " << PiotrSzawdynski.haslo
    << endl << "Nr usera " << PiotrSzawdynski.lp
    << endl << "Status " << PiotrSzawdynski.status
    << endl << "Rodzaj Konta "
    << PiotrSzawdynski.rodzaj_konta
    << endl
    << endl << "Nik " << Pietrzuch.nik
    << endl << "haslo " << Pietrzuch.haslo
    << endl << "Nr usera " << Pietrzuch.lp
    << endl << "Status " << Pietrzuch.status
    << endl << "Rodzaj Konta "
    << Pietrzuch.rodzaj_konta
    << endl
    << endl << "Nik " << Piotrus_Pan.nik
    << endl << "haslo " << Piotrus_Pan.haslo
    << endl << "Nr usera " << Piotrus_Pan.lp
    << endl << "Status " << Piotrus_Pan.status
    << endl << "Rodzaj Konta "
    << Piotrus_Pan.rodzaj_konta;
    
    getch();
    return( 0 );
}
Analiza kodu
Jak pewnie się zorientowałeś 
strukturę można wypełnić podobnie jak tablicę, gdy oczywiście przed uruchomieniem programu znamy wartości jakie ma zawierać. Co warte podkreślenia 
struktura Uzytkownicy_DDT posiada trzy obiekty 
PiotrSzawdynski,  Pietrzuch,  Piotrus_Pan. By wprowadzić bądź wyświetlić wartości danego obiektu, musimy użyć 
kropki( . )!!!nazwa_obiektu.nazwa_zmiennej = wartosc_wprowadzana
Większość kompilatorów po wprowadzeniu kropki z klawiatury wyświetla podpowiedz dla danego obiektu(typy danych dla tego obiektu(struktury)).
WAŻNE !!! dla niektórych kompilatorów należy użyć 
słowa kluczowego static Uzytkownicy_DDT PiotrSzawdynski.static Uzytkownicy_DDT PiotrSzawdynski =
{
    "PiotrSzawdynski",
    "!@#$%%^",
    1,
    "Aktywny",
    "Admin"
};
Tablice struktur
#include <iostream>
#include <string>
#include <conio.h>
struct DDT 
{
    
    std::string nik;
    std::string haslo;
    std::string status;
    std::string rodzaj_konta;
};
int main()
{
    using namespace std;
    
    DDT Uzytkownicy[ 3 ];
    cout << "Wprowadz dane.\n";
    
    for( short licz = 0; licz < 3; licz++ ) {
        cout << "Podaj nik ";
        cin >> Uzytkownicy[ licz ].nik;
        cout << "Podaj haslo ";
        cin >> Uzytkownicy[ licz ].haslo;
    }
    
    cout << endl
    << "Oto rezultat wprowadzonych danych:"
    << endl;
    for( short licz = 0; licz < 3; licz++ ) {
        cout << "Uzytkownik " << licz + 1
        << " Nik " << Uzytkownicy[ licz ].nik
        << "   haslo " << Uzytkownicy[ licz ].haslo
        << endl;
    }
    
    getch();
    return( 0 );
}
Właściwie nie ma różnić między użyciem tablicy zmiennych a tablicy struktur. Oczywiście możemy też wypełnić tablice w ten sposób:
DDT Uzytkownicy[ 3 ] =
{
    
    { "PiotrSzawdynski", "!@#$%%^" },
    
    { "Pietrzuch", "@m@m$@#@" },
    
    { "Piotrus_Pan", "PanPiotr" }
};
Przypisanie struktury do struktury
Tak jak zmienną można przypisać do innej zmiennej tak samo można postąpić z strukturą danych. Wystarczy użyć operatora ?=?.
#include <iostream>
#include <string>
#include <conio.h>
struct DDT 
{
    
    std::string nik;
    short wiek;
    char plec;
    
};
int main()
{
    using namespace std;
    DDT Monika, Mariola, Kasia;
    
    Monika.nik = "Mika";
    Monika.plec = 'K';
    Monika.wiek = 20;
    
    
    Kasia = Mariola = Monika;
    
    cout << "Wyswietla uzytkownikow plci pieknej"
    << endl
    << "Nik - " << Kasia.nik << endl
    << "Nik - " << Mariola.nik << "  wiek "
    << Mariola.wiek << endl
    << "Nik - " << Monika.nik << "  plec "
    << Monika.plec << endl;
    getch();
    return( 0 );
}
Ćwiczenia
1. Farmer zwrócił się do Ciebie z prośbą byś napisał program, który będzie przechowywał informacje o rodzajach zwierząt jakie posiada. Zwierzęta to krowa, koza, kura, pies i świnia. Cechy tych zwierząt to nazwa, waga, wiek(podany w tygodniach), oraz data nabycia(zakupu). Farmer dodał, iż krowę i świnię kupił 24-04-08r od znajomego, pies przybłąkał się 6.05.02r, natomiast kozę i kurę dostał w prezencie od wójta 23.02.09. Niestety resztę cech musisz określić sam, na podstawie przyjętych średnich(google) dla tych zwierząt. Dane mają być zawarte w strukturze. Rezultatem programu ma być:
a) pierwszy program?  wyświetlenie wszystkich danych w przejrzysty i zrozumiały dla użytkownika sposób, użytkownik nic nie podaje, program wyświetla tylko dane.
b) drugi program? program ma poprosić o wprowadzenie nazwy i wagi(w kilogramach) zwierzęcia(mają być wprowadzone trzy zwierzaki) , oraz wyświetleniu danych w odwrotny sposób do tego w jaki zostały wprowadzone, oraz  zachowaniu takiej kompozycji
Trzoda zawiera m.in.:
1.->nazwa_zwierzecia jego waga to waga_zwierzecia( podana w gramach ) gram.
2.->
3.->