Struktury w C++
Strukturę tworzy zbiór zmiennych różnych typów, zapisanych pod wspólną nazwą.
Korzystając ze struktur odwołujemy się do pojedynczej nazwy, podobnie jak do typu zmiennych. Struktura jest więc typem danych, takim jak int czy char.Struktura pozwala pogrupować zmienne do pojedynczego rekordu.
Aby odwołać się do poszczególnego składnika rekordu należy użyć operatora
->. lub
.
Każdy element struktury możemy zapisać oddzielnie, możemy też zapisać całą strukturę na raz.
Po słowie struct podajemy nazwę struktury, w nawiasach klamrowych podajemy typy danych występujące w strukturze.
PrzykładZdefiniujmy strukturę
pacjent:
struct pacjent
{
char imie[10];
int wiek;
char opischoroby[50];
bool zdrowy;
char ostatniawizyta[15];
} ;
Składa się ona z 5 odrębnych pól, wypełnijmy ją następującymi danymi:
imie = "raf";
wiek = 23;
opischoroby = "Syndrom Sodda";
zdrowy = false;
ostatniawizyta = "13.01.1989";
Zapis każdego rekordu struktury oddzielnie
pacjent X; // deklaracja struktury
X.imie[10] = "raf"; // odwołania do poszczególnych pól
X.wiek = 23;
X.opischoroby[50] = "Syndrom Sodda";
X.zdrowy = false;
X.ostatniawizyta[15] = "13.01.1989";
lub cała struktura na raz
pacjent X = {"raf", 23, "Syndrom Sodda", false, "13.01.1989"};
Odczyt danych ze struktury w ten sam sposób
Label1->Caption = X.opischoroby;
Aby sprawdzic ile bajtów zajmuje typ zmienych pacjent (struktura), należy posłużyć się operatorem sizeof.
int rozmiar = sizeof(pacjent);
Dla powyższej struktury jej rozmiar wynosi:
imie: 4Bx10 (bo 10 znakowa tablica typu chr)
wiek: 4B
opischoroby: 4Bx50
zdrowy: 1B
ostatniawizyta: 4Bx15
= 305B.
Z powyższego zestawienia widać, że źle zaprojektowana struktura oprócz niespełniania swojej funkcji będzie dodatkowo marnotrawić miejsce w pamięci RAM urządzenia lub komputera.
Zapis struktur do pliku odbywa się korzystając ze swobodnego dostępu do plików (binarnych).
Stosujemy tę samą metodę, co przy zapisywaniu liczb całkowitych na stałej długości np. 4 bajtów.
W C++ kontynuacją struktur są klasy.