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.

Podobne dokumenty