Wskaźniki 129
Wskaźniki 129
13
14
15
16
17
18
cout « "longVar:\t" « longVar;
cout « "\tAdres longVar:\t" « SlongVar « ”\n"; cout « "sVar:\t\t" « sVar; cout « "\tAdres sVar:\t" « SsVar « "\n”; return 0;
EFEKT DZIAŁANIA:
0x8fc9:fff4 0x8fc9:fff2 0x8fc9:ffee
Adres shortVar: Adres longVar: Adres sVar:
shortVar: 5
longVar: 65535
sVar: -56635 (Możesz uzyskać nieco inne wyniki)
ANALIZA:
Deklarowane są trzy zmienne, w linii 7 zmienna typu short, w 8 unsigned int, w 9 long. Ich wartości i adresy są wypisywane w liniach 11-16. Wykorzystany został operator adresu ( & ).
Wartość zmiennej shortVar wynosi 5 (tak jak należało oczekiwać), adres tej zmiennej wyniósł 0x8fc9:fff4. Ten skomplikowany adres jest specyficzny dla każdego komputera i może się zmieniać przy każdym uruchomieniu programu. Gdy uruchomisz program u siebie to uzyskasz inne adresy. Jedyne co się nie zmienia to różnice pomiędzy adresami. Jeśli na twoim komputerze zmienna całkowita typu short zajmuje dwa bajty, to różnica między dwoma pierwszymi adresami będzie właśnie dwubajtowa. Różnica między trzecim adresem a drugim będzie równa 4 (oczywiście jeśli zmienna typu long zajmuje 4 bajty). Rysunek 9.2. pokazuje, jak zmienne w naszym programie są przechowywane w pamięci.
Nie musisz znać numerycznej wartości adresu każdej zmiennej. Pamiętaj, że każda zmienna ma swój adres i przydzieloną liczbę komórek pamięci.
O tym, ile pamięci należy zarezerwować dla danej zmiennej mówi kompilatorowi typ
zmiennej, określony w miejscu deklaracji.
cout « "longVar:\t" « longVar;
13
14
15
16
17
18
cout « "\tAdres longVar:\t" « SlongVar « "\n"; cout « MsVar:\t\t" « sVar; cout « "\tAdres sVar:\t" « SsVar « "\n"; return 0;
shortVar: longVar: sVar:
5
65535
-56635
0x8fc9:fff4 0x8fc9:fff2 0x8fc9:ffee
Adres shortVar: Adres longVar: Adres sVar:
(Możesz uzyskać nieco inne wyniki)
Deklarowane są trzy zmienne, w linii 7 zmienna typu short, w 8 unsigned int, w 9 long. Ich wartości i adresy są wypisywane w liniach 11 — 16. Wykorzystany został operator adresu ( & ),
Wartość zmiennej shortVar wynosi 5 (tak jak należało oczekiwać), adres tej zmiennej wyniósł 0x8fc9:fff4. Ten skomplikowany adres jest specyficzny dla każdego komputera i może się zmieniać przy każdym uruchomieniu programu. Gdy uruchomisz program u siebie to uzyskasz inne adresy. Jedyne co się nie zmienia to różnice pomiędzy adresami. Jeśli na twoim komputerze zmienna całkowita typu short zajmuje dwa bajty, to różnica między dwoma pierwszymi adresami będzie właśnie dwubajtowa. Różnica między trzecim adresem a drugim będzie równa 4 (oczywiście jeśli zmienna typu long zajmuje 4 bajty). Rysunek 9.2. pokazuje, jak zmienne w naszym programie są przechowywane w pamięci.
Nie musisz znać numerycznej wartości adresu każdej zmiennej. Pamiętaj, że każda zmienna ma swój adres i przydzieloną liczbę komórek pamięci.
O tym, ile pamięci należy zarezerwować dla danej zmiennej mówi kompilatorowi typ zmiennej, określony w miejscu deklaracji.
Kiedy deklarujesz zmienna typu unsigned long to kompilator wie, że musi za
rezerwować w pamięci 4 bajty, tyle ile zajmuje zmienna tego typu.