Lekcja 27
Wskaźniki (typ wskaźnikowy) - część pierwsza. Adresowanie komórek, operator wyłuskania.
Wprowadzenie
Mam nadzieję, że dzięki poprzedniej lekcji, wiesz już doskonale czym jest referencja. Czas poznać kolejny typ - typ wskaźnikowy.
Wskaźnik podobnie jak referencja jest typem pochodnym. I tu właściwie całe podobieństwo do referencji się kończy. Tak jak referencja jest zagadnieniem w miarę łatwym do zrozumienia, tak typ wskaźnikowy jest do zrozumienia znacznie trudniejszy i sprawia problemy nawet zaawansowanym programistom.
W najbliższych lekcjach przedstawię Ci informacje o wskaźnikach. Chcę jednak, aby utkwiło w Twojej świadomości, że są to tak naprawdę tylko podstawowe informacje dotyczące wskaźników i że jak na razie Twoja wiedza odnośnie wskaźników będzie dość mocno ograniczona.
To wszystko wystarczy Ci przez jakiś czas na poznawanie nowych mechanizmów, a gdy zajdzie już taka potrzeba, wówczas informacje na temat wskaźników zostaną poszerzone.
Jednocześnie chcę Ci uświadomić, że wskaźniki są w języku C++ używane bardzo powszechnie i stosowane we wszystkich większych programach. Dlatego też uczulam Cię na zwracanie uwagi na wszystkie szczegóły i zapamiętanie w zasadzie wszystkiego, co postaram Ci się tu przedstawić.
Zmienne w pamięci operacyjnej
Musisz wiedzieć, że każda zmienna, która jest zadeklarowana w programie zostaje umieszczona w pamięci operacyjnej na czas działania programu.
Pamięć operacyjna to zbiór komórek pamięci. Każda komórka w pamięci ma określone położenie - adres. Adres jest liczbą, która jednoznacznie określa położenie komórki w pamięci.
Każda zmienna, którą deklarujemy w programie jest umieszczana w komórkach pamięci. W zależności, jakiego typu jest ta zmienna, może ona zostać umieszczona w jednej, dwóch lub większej liczbie komórek pamięci. Jednak adres zmiennej pokazuje zawsze na pierwszą komórkę pamięci - tam zaczyna się właśnie nasza zmienna.
Zwróć uwagę na dwa pojęcia - adres komórki i adres zmiennej. Zmienna może zajmować kilka komórek a każda z komórek ma własny adres. Jednak zmienna ma tylko jeden adres, równy adresowi pierwszej komórki pamięci, którą zajmuje.
Na szczęście my w naszych programach nie musimy nigdy podawać konkretnej wartości adresu zmiennej. Gdyby tak było, to okazałoby się, że nasz program działałby tylko w ściśle określonych warunkach, bowiem przecież nie możemy nigdy przewidzieć, czy dana komórka pamięci będzie zajęta czy nie.
Trzeba przecież pamiętać, że oprócz naszego programu, na komputerze mamy system operacyjny z wieloma procesami, a także najprawdopodobniej w tym czasie, na komputerze jest uruchomionych co najmniej kilka dodatkowych programów.
Na szczęście jednak, aż takimi szczegółami nie będziemy się musieli przejmować. Przejdźmy zatem do tego, czym musimy się martwić w naszych programach.