WSKAŹNIKI



Wskaźnik to takie ustrojstwo, które może wskazywać na jakiś adres, a co tym idzie może wskazywać na zmienną pod tym adresem. Tutaj omówię tylko praktyczne zastosowanie wskaźnika, jeśli jesteś bardziej dociekliya odsyłam do internetu, albo do kogoś mądrego.:)
Przed nazwą wskaźnika jest zawsze * (gwiazdka), a deklarujemy go tak samo jak zmienną.

int *p; // wskazanie będzie na typ int

wskaźnikowi przypisujemy adres (za pomocą & [ampersand])

int x=5; // zmienna x ma wartość 5
int *p=&x; // wskaźnik p jest wskazaniem na x

czyli jak zmienimy teraz x:
x=10;
to *p będzie wskazywał na 10, bo wskaźnik wskazuje na adres, więc jak zmienimy coś pod adresem to automatycznie zmienia się wskazanie. Teraz będzie taka metafora dla lepszego zrozumienia.

Mamy sobie szklaneczkę, wskazuje na nią i mówię „to jest moja szklanka i tylko z niej będę pił”, następnie wlewam sobie do szklaneczki piwko, odkładam na stół i idę po kiełbaskę, gdy mnie nie ma przy stole jakiś ch.. ,znaczy się, kolega wypija moje piwko i wlewa wodę. Ja przychodzę biorę moją szklankę i muszę pić tą wodę, bo to moja szklanka. Więc tak samo działają wskaźniki :D

Oczywiście istnieje możliwość przypisania do naszego wskaźnika innej zmiennej (zamiana szklanki) lub po prostu innego wskaźnika (wtedy dwa wskaźniki będą miały wskazanie na tan sam obiekt). Ale nie pasowało mi to do metafory :P.

A praktyczne zastosowanie jest takie, że możemy tak samo zrobić przy funkcjach, zamiast dawać samą wartość, dajemy adres i dzięki temu możemy w funkcji zmienić wartość pod adresem (czyli z powrotem nalać złocistego płynu do szklaneczki :D ).

Zmienia się tylko trochę deklaracja, bo musimy użyć właśnie wskaźnika czyli:

void dodaj (int a, int b, int *suma){
 

// zmienna suma jest wskaźnikiem

*suma = a + b; // więc jak się do nie odwołujemy do dajemy *

} // Po wykonaniu się funkcji zmienna której adres był przypisany do suma zostanie zmieniona

wywołanie funkcji dodaj:
int x=5, y=2, s=0;
dodaj(x,y,&s); // w zmiennej s będzie teraz nowa wartość

1 komentarz:

  1. "Mamy sobie szklaneczkę, wskazuje na nią i mówię „to jest moja szklanka i tylko z niej będę pił”, następnie wlewam sobie do szklaneczki piwko, odkładam na stół i idę po kiełbaskę, gdy mnie nie ma przy stole jakiś ch.. ,znaczy się, kolega wypija moje piwko i wlewa wodę. Ja przychodzę biorę moją szklankę i muszę pić tą wodę, bo to moja szklanka. Więc tak samo działają wskaźniki :D"
    Nie ma to jak zrozumieć wskaźniki dzięki prostemu tłumaczeniu, sądzę że to JJ pisał :D

    OdpowiedzUsuń