5.3 Arytmetyka wskaźników
Dalej: 5.4 Tablice znaków (C-napisy)
W górę: 5. Tablice statyczne i wskaźniki
Wstecz: 5.2 Typ tablicowy
5.3 Arytmetyka wskaźników
Do wskaźników
można dodawać (i odejmować) liczby całkowite.
Typ wskaźnikowy nie jest jednak typem całkowitym,
takie dodawanie jest zdefiniowane w specjalny sposób.
Załóżmy, że
p jest wskaźnikiem typu
Typ*, a zmienna
shift jest zmienną typu całkowitego (ale nie
long).
Wartością wyrażenia
p+shift jest wtedy
adres zawarty w zmiennej
p powiększony o
shift
wielokrotności wymiaru zmiennej typu
Typ
(czyli
sizeof(Typ)).
Jeśli zatem
shift wynosi 2, a
sizeof(Typ)
wynosi 4 (jak dla
int), wartością
p+shift jest adres
zawarty w
p zwiększony o 8 (= 2 . 4).
Jeśli
sizeof(Typ) wynosiłby 8, jak dla typu
double, to wartością
p+shift byłby adres
zawarty w
p powiększony o 8.
Właśnie, między innymi, ze względu na arytmetykę wskaźników
deklarując zmienną wskaźnikową trzeba określić,
na jakiego typu zmienne będzie ona wskazywać.
Z tego też powodu nie można stosować arytmetyki wskaźników do
wskaźników generycznych
(typu
void*)
- brak
określonego typu powoduje, że nie wiadomo by było o ile
należy zwiększyć taki adres.
Spójrzmy na następujący przykład:
Wyszukiwarka
Podobne podstrony:
node288 2I5D2N5RZRB6CGYEMZRHQCC7ATOUO3IRSOX574Qnode282 WOVP4BK63MCGNM5GTHT3EEHALDUBFYJD4USEYBInode284 32VLTUD5CYE3KTEH2TFABQIRF27HE4C27KLHZ6Ynode28 PKGCYJXJI5EANQDANU752M6HF646JXMM7AS4XHAnode281 DCENVS4LIUWKF7REGZCZXAOFCLUIXMLV3S3XDRYnode28node283 TV2JNOLYIKW3V6KKIYBUMQKCHOSEJY25YB2QWPQnode287 TIIPRQU5MEOY6QZ7C2ZOE5NXBHNUZONKBFFTVGAnode28 OXUPJNFXUT2I2PDQ2EVXKR3RSP5N5AFSB2JWRZInode285 S723HOGRZ7UQCUBD44SASX6UAC57PN54RZO3UGAnode289 WA5XXFEHCW2F2LFAY5I73B6RP32YV6PBKXZV6VYnode28 E3CM7LVUGI36LS5WVKDV6B6SIKELNE34235K4GQnode280 IPZIWUD7GZ2FGPDFXDGFKSPQ6WZ7WJSX5GK4ZGQnode28node286 WMY2LOWEUT5INMKWDK6UUXHFFD2AGJMN2ZXTQ6Ynode28node28więcej podobnych podstron