ďťż
Lemur zaprasza
l Nowości l l Kurs języka C l l Pliki l l Linki l l e-mail l wizyt od 99.09.01 Strona domowa Bogdana Modzelewskiego Najlepiej przeglądać w rozdzielczości 1024x768 15. Wskaźniki Z ogólnymi informacjami dotyczącymi wskaźników zapoznamy się, podobnie jak to było w przypadku tablic, przy pomocy przykładowego rysunku. Załóżmy, że zadeklarowaliśmy sobie w programie zmienną typu int o nazwie x i od razu przypisaliśmy jej wartość 124. Czyli wyglądałoby to następująco: int x=124; Załóżmy teraz, że kompilator umieścił naszą zmienną w pamięci pod adresem 1000. Czyli wyglądałoby to tak jak na rysunku przedstawionym powyżej. Spróbuj teraz wczuć się w rolę kompilatora w przypadku, gdy w swoim programie każdesz mu wykonać następujące polecenie: i = x; Czyli do jakiejś zmiennej o nazwie i (która jest tu nieistotna) przypisujesz wartość zmiennej x. Pomyśl co musi zrobić kompilator, żeby wykonać to polecenie. Interesuje nas skąd kompilator wie jaką wartość ma nasza zmienna x? Odpowiedź brzmi: nie wie. Jednak wie, w którym miejscu pamięci znajduje się zmienna. Sprawdza więc jaki jest jej adres - w naszym przypadku jest to adres 1000. Następnie odczytuje komórkę pamięci znajdującą się pod tym adresem i voila ! Otrzymuje w efekcie liczbę 124, która się tam znajduje. Zastanawiasz się teraz zapewne po co Ci to wszystko mówię ? Otóż podobnie, z naszego (czyli programisty) punktu widzenia, działają wskaźniki. Załóżmy, że oprócz naszej zmiennej x mamy jeszcze jedną zmienną (której deklaracji na razie nie podam), która ma wartość 1000. W naszym przypadku jest ona umieszczona pod adresem 1016. Przypatrz się teraz uważnie rysunkowi. Czy nic nie wydaje Ci się podejrzane ? Nasza druga zmienna zawiera wartość, która jest równa adresowi zmiennej x! Tą drugą zmienną nazywamy wskaźnikiem i w przypadku, gdy chcemy odczytać zawartość komórki pamięci o adresie, który jest zawarty w tej zmiennej to mówimy kompilatorowi (oczywiście przy pomocy odpowiedniej składni): "Słuchaj, podaj mi zawartość komórki pamięci, której adres jest zawarty w tej oto zmiennej (i tu ją podajemy)". Kompilator oczywiście stosuje się do naszego polecenia i w efekcie mamy to o co nam chodziło. To by było na tyle jeśli chodzi o wyjaśnienie pojęcia wskaźnika. W następnych podpunktach zostaną pokazane na podstawie przykładowych programów sposoby ich deklaracji i wykorzystania. Mam prośbę, żebyś ten punkt czytał szczególnie uważnie, gdyż jest to temat, który po pierwsze jest trudny, a po drugie bardzo ważny. Praktycznie nie ma żadnego poważniejszego programu, który nie operowałby na wskaźnikach. I jeszcze jedna uwaga na koniec tego wstępu do wskaźników. Nie bierz, proszę, zbyt dosłownie sposobu odczytu watości zmiennej przez kompilator. Opisałem sposób, w jaki robiłby to gdyby był człowiekiem. Kompilator człowiekiem jednak nie jest i robi to w rzeczywistości trochę inaczej. Z Twojego punktu widzenia nie jest jednak ważne jak, ważne jest to, żeby zrobił to dobrze. Zastosowałem taką formę opisu w takim celu, żebyś mógł łatwiej zrozumieć istotę wskaźników. Mam nadzieję, że dzięki temu uda mi się wyjaśnić ten trudny dla początkującego temat w sposób przystępny. [ | | ] |