Pojęcia programowania: wskaźniki

Przyjrzyjmy się, jak wskaźniki są używane w języku programowania C.

Zajmiemy się dwiema zmiennymi:

aptr

Spotkamy się również z dwoma kluczowymi znakami:

- where
would return the address location of variable
- where
means follow the memory address stored in ptr and set that location to 8

Załóżmy, że a znajduje się pod adresem 0x8130 w pamięci i ptr pod adresem 0x8134; załóżmy też, że jest to maszyna 32-bitowa, w której int jest 32-bitowy rozmiar. Poniżej podano, co znajdowałoby się w pamięci po wykonaniu następującego fragmentu kodu:

int a = 5;int *ptr = NULL;

Adres Treść
0x8130 0x00000005
0x8134 0x00000000

(Pokazany tutaj wskaźnik NULL to 0x00000000.) Po przypisaniu adresu a do ptr:

 ptr = &a;

zwraca następujące wartości pamięci:

Adres Spis treści
0x8130 0x00000005
0x8134 0x00008130

Następnie poprzez wyłuskiwanie ptr przez kodowanie:

 *ptr = 8;

komputer weźmie zawartość ptr (czyli 0x8130), „zlokalizuj” ten adres i przypisz 8 do tej lokalizacji, uzyskując następującą pamięć:

Adres Treść
0x8130 0x00000008
0x8134 0x00008130

Oczywiście, dostęp do a zwróci wartość 8, ponieważ poprzednia instrukcja modyfikowała zawartość

za pomocą wskaźnika ptr.

Leave a Reply

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *