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
// 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ść
"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"
OdpowiedzUsuńNie ma to jak zrozumieć wskaźniki dzięki prostemu tłumaczeniu, sądzę że to JJ pisał :D