Wskaźniki
Im bardziej zaglądał do środka,
tym bardziej nic tam nie było.
A. A. Milne „Kubuś Puchatek”
Dwa poprzednie rozdziały upłynęły nam na poznawaniu różnorodnych aspektów
programowania obiektowego. Nawet teraz, w kilkanaście lat po powstaniu, jest ona
czasem uważana może nie za awangardę, ale poważną nowość i „odstępstwo” od
„klasycznych” reguł programowania.
Takie opinie, pojawiające się oczywiście coraz rzadziej, są po części echem
dawnej popularności języka C. Fakt, że C++ zachowuje wszystkie właściwości swego
poprzednika, zdaje się usprawiedliwać podejście, iż są one ważniejsze i bardziej
znaczące niż „dodatki” wprowadzone wraz z dwoma plusami w nazwie języka. Do
owych „dodatków” ma rzecz jasna należeć programowanie obiektowe.
Sprawia to, że ogromna większość kursów i podręczników języka C++ jest
usystematyzowana wedle osobliwej zasady. Otóż mówi ona, że najpierw należy
wyłożyć wszystkie zagadnienia związane z C, a dopiero potem zająć się
„nowinkami”, w które został wyposażony jego następca.
Zastanawiając się nad tym bliżej, można nieomal nabrać wątpliwości, czy w ten
sposób nadal uczymy się przede wszystkim programowania, czy może bardziej
zajmują nas już kwestie formalne danego języka? Jeżeli nawet nie odnosimy
takiego wrażenia, to nietrudno znaleźć szczęśliwsze i bardziej naturalne drogi
poznania tajników kodowania.
Pamiętajmy, że programowanie jest raczej praktyczną dziedziną informatyki, a
jego nauka jest w dużej mierze zdobywaniem umiejętności, a nie tylko samej
wiedzy. Dlatego też wymaga ona mniej teoretycznego nastawienia, a więcej
wytrwałości w osiąganiu coraz lepszego „wtajemniczenia” w zagadnienia
programistyczne. Naturalną koleją rzeczy jest więc uszeregowanie tych zagadnień
według wzrastającego poziomu trudności czy też ze względu na ich większą lub
mniejszą użyteczność praktyczną.
Takie też założenie przyjąłem w tym kursie. Nie chcę sobie jednak robić
autoreklamy twierdząc, że jest on „inny niż wszystkie” pozostałe; mam nawet
nadzieję, że to określenie jest całkowitą nieprawdą i że istnieje jeszcze
mnóstwo innych publikacji, których autorzy skupili się głównie na nauczaniu
programowania, a nie na opisywaniu języków programowania.
Zatem zgodnie z powyższą tezą kwestie programowania obiektowego, jako
niezwykle ważne same w sobie, wprowadziłem tak wcześnie jak to tylko było
możliwe - nie przywiązując wagi to faktu, czy są one właściwe jeszcze językowi
C, czy może już C++. Bardziej liczyła się bowiem ich rzeczywista przydatność.
Na tej samej zasadzie opieram się także teraz, gdy przyszedł czas na
szczegółowe omówienie wskaźników. To również ważne zagadnienie, którego geneza
nie wydaje się wcale tak bardzo istotna. Najważniejsze, iż są one częścią języka
C++, w dodatku jedną z kluczowych - chociaż może nie najprostszych. Umiejętność
właściwego posługiwania się wskaźnikami oraz pamięcią operacyjną jest więc
niebagatelna dla programisty C++.
Opanowaniu przez ciebie tej umiejętności został poświęcony cały niniejszy
rozdział. Możesz więc do woli z niego korzystać :)
Ku pamięci Karol Kuczmarski (Xion)
Wskaźniki na zmienne Karol Kuczmarski (Xion)
Wskaźniki do funkcji Karol Kuczmarski (Xion)
Podsumowanie Karol Kuczmarski (Xion)