cz8

cz8



Programowanie

ie pobiera albo ni


inny wskaźnik. Więcej nawet. O ile normalnie nie wolno, bez rzutowania, kopiować do wskaźnika danego typu zawartości wskaźnika innego typu (patrz listing 70 - w drugiej linii funkcji głównej odbywa się takie rzutowanie), o tyle wskaźnik typu void jest jedynym elementem, dla którego jest to możliwe. Do wskaźnika typu void możemy wpisać zawartość innego typu wskaźnika bez konieczności rzutowania... oraz w drugą stronę - możemy zapisać go do dowolnego wskaźnika bez konieczności rzutowania.

Właściwość ta ułatwia czasami zapis tam, gdzie typ wskazywanego obiektu nie ma znaczenia. Zobaczmy na przykład deklaracje funkcji memepy, którą wstępnie poznaliśmy w ramce omawiającej struktury: 'memepy(void *, const void *, s. /.e t);

Gdyby nie specyficzne własności wskaźnika do typu pustego, jej wywołanie musiałoby przebiegać następująco:

memepy((void*)&sl , (void*)&^2, sizeof(si));

Zamiast tego jednak, piszemy znacznie krócej: memcpyC&si,    sizeof(sl));

Ponadto, jak pokazał nam listing 68, wskaźnik typu void pozwala nam czasami pozbyć się niektórych wyrzucanych przez kompilator ostrzeżeń. Element ten jesi po prostu mniej pilnowany i kompilator musi założyć, żc stosując go, sami wiemy, co robimy.


Podsumowanie

Nic zniechęcaj się, jeśli czegoś nie zrozumiałeś. Wszystkie kody prezentowanych programów będą jak zwykle dostępne na stronach Elporta-lu. Sięgaj do nich śmiało, zmieniaj je, eksperymentuj. To chyba najlepszy sposób na zdobycie nowej wiedzy. Jeśli jeszcze tego nic zrobiłeś -postaraj się zdobyć kody źródłowe biblioteki stdio, zgodnie z opisem w tym odcinku.

Wskaźnik na typ pusty

Poznałeś już typ „zmiennej" o nazwie void. Powiedziałem Ci wtedy, że jest to specyficzny typ, który nie istnieje. Nie ma sensu tworzenie zmiennej typu void i taka próba zostanie zgłoszona przez kompilator jako btąd. Jedynym przeznaczeniem tego dziwnego tworu jest oznaczenie w pewnych miejscach, że żadnych zmiennych nie ma. Ze słowa kluczowego vold korzystaliśmy na razie przy tworzeniu funkcji. Funkcja że pobierać albo zwracać wartość typu pustego, co

void

Zupełnie inne znaczenie ma jednak wskaźnik na obiekt typu pustego. Utworzenie takiego wskaźnika jest jak najbardziej prawidłowym działaniem: void* pv;

Wskaźnik taki ma pewne szczególne własności. Przede wszystkim nie wolno na nim wykonywać jakichkolwiek działań, o jakich mowa była w przypadku wskaźników. Nie można go inkrementować czy dekrementować, dodawać do niego wartości, nie można odjąć od siebie dwóch wskaźników tego typu...

Teraz trochę o tym, co nam wolno. Wskaźnik typu void może być bez problemu zrzutowany na dowolny

W nadchodzącym odcinku zobaczymy zmiany, jakie nastąpiły w nowym WinAVR. Nowe środowisko jest już dostępne, jednak nie instaluj go jeszcze teraz, jeśli nie czujesz się w C pewnie. Niektóre z wprowadzonych zmian spowodują niestety, że część z napisanych przez nas programów nie będzie działać prawidłowo.

Część 9 będzie trochę spokojniejsza. Poznaliśmy dużo nowych elementów C i teraz będziemy zajmować się przykładami ich zastosowania.

Radosław Koppel

radoslaw.koppel@elportal.pl

Wstąp do Klubu AVT

W Elektronik (gitarzysta fadio

MAGAZYN ELEKTRONIKI PROFESJONALNEJ    ..........

Dóffl BtgSSBP ®’lS!Bter


ESTI


. sTLJciici    INTERNET

Prenumerujesz więcej niż jedno z powyższych pism?

To znaczy, że jesteś już Członkiem Klubu AVT uprawnionym do comiesięcznego zamawiania bezpłatnych egzemplarzy naszych czasopism, wydanych przed 2 miesiącami.

Jeśli prenumerujesz n czasopism, możesz zamówić n-1 darmowych egzemplarzy (np. Prenumerator 2 tytułów może otrzymać za darmo 1 egzemplarz, zaś Prenumerator 6 tytułów ma prawo do 5 darmowych egzemplarzy).

Prezentacje aktualnie oferowanych numerów wszystkich czasopism znajdziesz na stronach

www.Klub.AVT.pl . Tam również możesz złożyć bezpłatne zamówienie.

Zaprenumeruj! Zajrzyj na str. 75 lub skontaktuj się z Działem Prenumeraty: tel 022 5689922, e-mail prenumerata@avt.pl


Jeszcze nie prenumerujesz?

48 Marzec 2006 Elektronika dla Wszystkich


Wyszukiwarka

Podobne podstrony:
cz8 Programowanie Programowanie #def i ni i nt8_t bardziej rozbudowany typ, Zamiast tworzyć struktu
cz8 Programowanie niem naszego wskaźnika na wskaźnik na strukturą typu niekompletnego.
img002 o .pg.odJU^. dsJeń. duta w, )gctn<W oLutc aap^ieuc i ^ n.ebo ni^tileDKlń IWbW? Ki/olko- ~
cz4 Programowan ie Jak to robi GCC Co to są tak naprawdę zmienne lokalne? Kiedy zdefiniujesz jakąś
cz8 Programowanie Programowanie ABC... C Zamieszanie z puts i gets W praktyce większość funkcji pos
cz8 Programowanie Znamy już przyczynę problemu. Jak go rozwiązać? W posiadanej przez nas wersji Jak
cz8 Programowanie Rys. 43 Poszukiwanie źródeł bibliotek standardowych. Wybierając odnośnik avr-libć
cz8 Programowanie I Listing 68 ■ fcheat_iPodsumowanie rozwiązania Możesz uznać teraz, że C jest str
cz8 Programowanie Programowanie ■.onego zakresu uwiązanie
P5020300 nie Jest: tak ie objaśnienie potrzebne. Ni. ■ u mówić „idę naprawdę i idąc widzę lianie jej
64758 Image215 Programowanie To właśnie możliwość zmiany pozycji wskaźnika wpływa na możliwość
skanowanie0004 60 Apoloniusz 7;! albo inny jeszcze mierniejszy poeta ująłby to nie gorzej; Homer zaś
Program zajęć kulinarnychSmaki, kolory, zapachy... Program przeznaczony dla uczniów ni epełnosprawny
16 SWB - Programowanie mikrokontrolerów - wykład 10a®*Stos i rejestr Wskaźnik stosu •

więcej podobnych podstron