Wskaźniki
Wskaźniki to potęga programowania. Są używane głównie w językach C i C++. Służą do odnoszenia się
bezpośrednio do komórek pamięci komputera. Przypuśćmy, że dana zmienna jest sobie używana w programie.
No to my w programie używamy jej przy pomocy etykiety tak, czyli mamy int zmienna = 1;. I
ta etykieta leży po lewej stronie, a wartość po prawej. Lewa strona nazywana jest l-value, a prawa r-value.
Do lewej strony przypisujemy wartość, a prawa strona to wartość przypisywana, oczywiście w przypadku znaku
równości. No i teraz wyobraźmy sobie tak, że napiszemy int zmienna2 = zmienna;, no i fajnie,
ale załóżmy, że chcemy zmienić wartość zmiennej bez używania jej. Wtedy używamy wskaźników. Przykład użycia
wskaźników: int * wsk_zmienna = &zmienna;. No to dobra, ta "gwiazdka" czyli "*" nazywa się
operatorem wyłuskania, a "&" to ampersand i tak oto pobieramy adres zmiennej o nazwie "zmienna" czyli
tej którą wcześniej podaliśmy.
W praktyce są to bardzo przydatne rzeczy. Mamy przecież możliwość tworzenia interfejsu graficznego z poziomu C++ na przykład i do tego niezbędne są po prostu wskaźniki, C++ ma tam swoje mechanizmy, których używamy jak powiedzmy w przypadku biblioteki Qt, która jednak tania nie jest. Jest też prosta biblioteka WinAPI do tworzenia interfejsów graficznych, prosta bo interfejs wygląda prosto, ale kod już nie, kod jest niesamowicie skomplikowany i legenda głosi, że część z programów napisanych niby to w C++ tworzyło dawno temu SI czyli sztuczna inteligencja. W praktyce trudno utworzyć interfejs graficzny dla języków C i C++, ale z kolei bardzo łatwo dla Scali czy Javy. Bardzo łatwo pod tym względem że w tydzień jesteś w stanie wyszukać w necie coś sensownego a nie po miesiącu zostawiasz C++ bo nie możesz znaleźć interfejsu graficznego. C, C++ mają inne zastosowania i można ich spokojnie używać poprzez interfejs w terminalu. Wiadomo, istnieją dużo bardziej zaawansowane funkcje jak wskaźniki do wskaźników, tablice wskaźników czy chociażby wskaźniki do funkcji gdzie przy pomocy wskaźnika mamy dostęp do funkcji programu, taki jakby mechanizm refleksji znany chociażby z Javy czy Scali.
W praktyce w C++ możemy zrobić znacznie więcej niż w C bo ma dużo rozbudowanych rzeczy, ale ja uważam, że bez C nie ma co podchodzić do sensownego programowania, C to patrząc na inne języki programowania dosyć prosty język, bo tam za dużo funkcji nie ma i to jest totalna podstawa po prostu. Wskaźników też można się nauczyć. Innym powodem do używania wskaźników jest przykład z C gdzie przydzielamy dynamicznie pamięć dla określonej struktury, jak ja to mówię "mallokujemy" pamięć czyli używamy funkcji malloc. Nie działało to jednak tak jakbym tego chciał, ale coś tam zrobić można, jak nie chce się zapisywać danych w pamięci to zapisuje się je do pliku tekstowego i pobiera zeń, a taki program już działa zdecydowanie lepiej, a może inaczej, działa, nie no żartuję.