typy złożone
Transkrypt
typy złożone
TYPY ZŁOŻONE typedef typedef stara_nazwa nowa_nazwa; typedef int liczba_calkowita; typedef int* wsk_calkowita; Typ wyliczeniowy enum Nazwa {WAR_1, WAR_2, …, WAR_N }; Cel zastosowania: tworzenia zmiennych, które przechowywać tylko pewne z góry ustalone wartości powinny enum Kierunek {W_GORE, W_DOL, W_LEWO, W_PRAWO}; enum Kierunek kierunek = W_GORE; enum Kierunek { W_GORE = 5, W_DOL = 5, W_LEWO = 2, W_PRAWO = 1 }; zmienna przechowuje wartości liczbowe całkowite, nieujemne, skojarzone z wyrazami w liście. Przykład ● Typ enum Struktura Typ danych przechowujący wiele różnych typów w jednej zmiennej. ● struct nazwa_struktury { int pole1; int pole2; char pole3; }; struct Struktura zmienna; zmiennaS.pole1 = 60; zmiennaS.pole2 = 2; zmiennaS.pole3 = 'a'; Unia union LiczbaLubZnak { int calkowita; char znak; double rzeczywista; }; Pola w unii nakładają się na siebie w ten sposób, że w danej chwili można w niej przechowywać wartość tylko jednego typu. Unia zajmuje w pamięci tyle miejsca, ile zajmuje największa z jej składowych. union LiczbaLubZnak liczba; liczba.calkowita = 10; printf("%d\n", liczba.calkowita); Inicjalizacja struktur i unii struct moja_struct { int a; char b; } moja = {1,'c'}; struct moja_struct { int a; char b; } moja = {.b = 'c'}; Pola bitowe struct moja { unsigned int a1:4, /* 4 bity */ a2:8, /* 8 bitów */ a3:1, /* 1 bit */ a4:3; /* 3 bity */ }; Liczba występująca po dwukropku oznacza rozmiar pola w bitach. Pola zadeklarowano jako unsigned int, ponieważ bity są wartością bez znaku.