|
اعمال محاسباتی با اشاره گرها |
اشاره گرها عملوندهايی مجاز در عبارات محاسباتی ، و رابطه ای می
باشند ، البته تمامی عملگرهايی که در اينگونه عبارات به کار می
روند برای اشاره گرها مجاز نمی باشند . در اين مبحث به بررسی
عملگرهايی که عملوندی از نوع اشاره گر می توانند داشته باشند و
نحوه کاربرد آنها می پردازيم .
يک اشاره گر می تواند افزايش (++) يا کاهش (--) يابد
. يک عدد صحيح می تواند به آن اضافه (=+ يا +) و يا
از آن کم (=- يا -) شود .
فرض کنيد که آرايهint
v[5]
تعريف شده است و اولين خانه آن در آدرس 3000 از حافظه قرار
دارد و فرض کنيد که
vptr
به خانهv[0]
از آرايه اشاره می کند . توجه داشته باشيد که برای اينکه
vptr
به آرايه
v
اشاره کند کافی است از يکی از دستورات زير استفاده کنيم :
در رياضيات معمول 2+3000 برابر 3002 می شود اما در
محاسبات اشاره گرها معمولاً بدين صورت نم باشد . هنگامی که عدد
صحيحی به يک اشاره گر اضافه و يا از آن کم می شود ، مقدار اشاره گر
معمولاً به اندازه آن عدد زياد يا کم نمی شود ، بلکه به اندازه طول
نوع داده ای که اشاره گر به آن اشاره می کند ، زياد يا کم می شود .
به عنوان مثال دستور
vptr += 2;
حاصلش برابر
(3000 + 2*4) 3008
خواهد شد البته با فرض اينکه متغيری از نوع
int
در چهار بايت از حافظه قرار می گيرد . در آرايه
v
، اشاره گر
vptr
حالا به خانهv[2]
اشاره می کند .
اگر متغيری از نوع
int
در دو بايت از حافظه قرار بگيرد حاصل دستور
vptr += 2;
خانه
(3000 + 2*2)3004
می بود .
اگر
vptr
به خانه
v[4]
که در آدرس 3016 است اشاره کند اجرای دستور زير :
باعث می شود که
vptr
به خانه(3016
- 4*4)3000
يعنیv[0]
اشاره کند .
هر يک از دستورات زير باعث می شود که اشاره گر به خانه بعدی آرايه
v
، اشاره کند .
و هر يک از دستورات زير باعث می شود که اشاره گر به خانه قبلی
آرايه
v
، اشاره کند .
اشاره گرهايی که به خانه های يک آرايه اشاره می کنند می توانند از
يکديگر کم شوند . به عنوان مثال اگر
vptr
حاوی 3000 (يعنی به خانهv[0]
اشاره کند ) و
v2ptr
حاوی 3008 ( يعنی به خانهv[2]
اشاره کند ) دستور زير :
تعداد خانه های بين
vptr
تا
v2ptr
را در
x
قرار می دهد که در اينجا
x
حاوی 2 می گردد . محاسبات اشاره گرها تنها هنگامی که اشاره
گرها به خانه های يک آرايه اشاره می کنند ، معنا دار هستند .
همچنين مقايسه اشاره گرها نيز هنگامی مفهوم دارد که به خانه های يک
آرايه اشاره کنند به عنوان مثال مقايسه دو اشاره گر می تواند نشان
دهد که يکی از اشاره گرها به خانه ای با انديس بزرگتر نسبت به
اشاره گر ديگر ، اشاره می کند .
|