STUDIUM PRZYPADKU IMPLEMENTACJA LISTY WSKAŹNIKOWEJ 115
• Powszechna praktyki konstruktor)'i destruktory
Struktury mają pewne dodatkowe możliwości w stosunku <k> zmiennych. Mowa tutaj o
rozmiarze elementu struktury. W przeciwieństwie do zmiennej może on mieć nawet 1 bit!.
Aby móc zdefiniować taką zmienną musimy użyć tzw. pola bitowego. Wygląda ono tak:
struct moja {
unsigned int al:4, /* 4 bity •/
a2:8, /* 8 bitów (często i bajt) •/ a3:1, /* 1 bit •/ a4:3; /* 3 bity •/
Wszystkie pola tej struktury mają w sumie rozmiar 16 bitów, jednak możemy odwoływać się do nich w taki sam sposób, jak do innych elementów struktury. W ten sposób efektywniej wykorzystujemy pamięć, jednak istnieją pewne zjawiska, których musimy być świadomi przy stosowaniu pól bitowych. Więcej na ten temat w rozdziale przenośność programów.
Pola bitowe znalazły zastosowanie głównie w implementacjach protokołów sieciowych.
Zobacz w Wikipedii: Lista
Ko/.ważmy teraz coś. co każdy z nas może spotkać w codziennym życiu. Każdy z nas widział kiedyś jakiś przykład listy (czy to zakupów, czy też listę wierzycieli). Język C też oferuje listy, jednak w programowaniu listy będą służyły do czegoś innego. Wyobraźmy sobie sytuację, w której jesteśmy autorami genialnego programu, który znajduje kok-jne liczby pierwsze. Oczywiście każdą kokjną liczbę pierwszą może wyświetlać na ekran, jednak z matematyki wiemy, że dana liczlta jest liczbą pierwszą, jeśli nie dzieli się przez żadną liczbę pierwszą ją poprzedzającą, mniejszą od pierwiastki! z badanej liczby. Uff. mniej więcej chodzi o to. że moglibyśmy wykorzystać znalezione wcześniej liczby tło przyspieszenia działania naszego programu. Jednak nasze liczby trzeba jakoś mądrze przechować w pamięci. Tablice mają ograniczenie musimy z góry znać ich rozmiar. Jeśli zapełnilibyśmy tablicę, to przy znalezieniu każdej kolejnej liczby musielibyśmy:
1. przydzielać nowy obszar pamięci o rozmiarze poprzedniego rozmiaru + rozmiar zmiennej. przechowującej nowo znalezioną liczbę
2. kopiować zawartość starego obszaru do nowego
3. zwalniać stary, nieużywany obszar pamięci
4. w ostatnim elemencie nowej tablicy zapisać znakzioną liczbę.
Cóż. trochę tutaj roboty jest. a kopiowanie całej zawartości jednego obszaru w drugi jewt czasochłonne. W takim przypadku możemy użyć listy. Tworząc listę możemy w prosty sposób przechować nowo znalezione liczby. Przy użyciu listy nasze postępowanie ograniczy się elo:
1. przydzielenia obszaru pamięci, aby przechować wartość obliczeń
2. dodać elo listy nowy element
Prawda, że proste? Dodatkowo, lista zajmuje w pamięci tylko tyle pamięci, ile potrzeba na aktualną liczbę elementów. Pusta tablica zajnnije natomiast tyle samo miejsca co pełna tablica.