STUDIUM PRZYPADKU — IMPLEMENTACJA LISTY WSKAŹNIKOWEJ 145 Zobacz też • Powszechne praktyki — konstruktory i destruktory Pola bitowe Struktury mają pewne dodatkowe możliwości w stosunku do 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 a1:4, /* 4 bity */ a2:8, /* 8 bitów (często 1 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. Studium przypadku â implementacja listy wskaźni- kowej Zobacz w Wikipedii: Lista Rozważ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 so- bie sytuacjÄ, w której jesteÅmy autorami genialnego programu, który znajduje kolejne liczby pierwsze. OczywiÅcie każdÄ
kolejnÄ
liczbÄ pierwszÄ
może wyÅwietlaÄ na ekran, jednak z ma- tematyki wiemy, że dana liczba jest liczbÄ
pierwszÄ
, jeÅli nie dzieli siÄ przez żadnÄ
liczbÄ pierwszÄ
jÄ
poprzedzajÄ
cÄ
, mniejszÄ
od pierwiastka z badanej liczby. Uï¬, mniej wiÄcej cho- dzi o to, że moglibyÅmy wykorzystaÄ znalezione wczeÅniej liczby do 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 zmien- nej, 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Ä znalezionÄ
liczbÄ. Cóż, trochÄ tutaj roboty jest, a kopiowanie caÅej zawartoÅci jednego obszaru w drugi jest
... zobacz całą notatkę
Komentarze użytkowników (0)