112
(czyli np. znaku czy liczby) w pamięci komputera. Dokładniejszą definicję możesz znaleźć w Wikipedii.
By stworzyć wskaźnik do zmiennej i móc się nim posługiwać należy przypisać mu odpowiednią wartość (adres obiektu, na jaki ma wskazywać). Słupi mamy znać ten adres? Wystarczy zapytać nasz komputer, jaki adres przydzielił zmiennej, którą np. wcześniej gdzieś stworzyliśmy. Robi się to za pomocą operatora & (ojH*ratora pobrania adresu). Przeanalizuj następujący kod1:
tfinclude <stdio.h>
int main (void)
{
int liczba ■ 80;
printf("Zmienna znajduje sie pod adresem: %p, i przechowuje wartość: ’/,d\n" (void*)&liczba, liczba); return 0;
>
Program ten wypisuje adres pamięci, |xm! którym znajduje się zmienna oraz wartość jaką kryje zmienna przechowywana pod owym adresem.
Aby móc zapisać gdzieś taki adres należy zadeklarować zmienną wskaźnikową. Robi się to poprzez (kalanie * (gwiazdki) po typie na jaki zmienna ma wskazywać, np.:
int *wskaznikl; char *wskaznik2; float*wskaznik3;
Niektórzy programiści mogą nieco błędnie interpretować wskaźnik do typu jako nowy typ i uważać, że jeśli napiszą:
int* a,b,c;
to otrzymają trzy wskaźniki do liczby całkowitej. Tymczasem wskaźnikiem będzie tylko zmienna a, natomiast b i c będą po prostu liczbami. Powodem jest to, że ”gwiazdka” odnosi się do zmiennej a nie do typu. W tym przypadku trzy wskaźniki otrzymamy pisząc:
int *a,*b,*c;
Aby uniknąć pomyłek, lepiej jest pisać gwiazdkę tuż przy zmiennej: int *a,b,c;
albo jeszcze lepiej nie mieszać deklaracji wskaźników i zmiennych:
int *a; int b,c;
‘Warto zwrócić uwagę na rzutowanie do typu wskaźnik na xwid. Rzutowanie to jest wymagane przez funkcję printf, gdyż tn oczekuj*?, że argumentem dla fonnatu Xp będzie wialnie wskaźnik na vouL gdy tymczasem w naszym przykładzie wyrażenie fcllczba jest typu wskaźnik na int