اعمال محاسباتی با اشاره گرها

    اشاره گرها عملوندهايی مجاز در عبارات محاسباتی ، و رابطه ای  می باشند ، البته تمامی عملگرهايی که در اينگونه عبارات به کار می روند برای اشاره گرها مجاز نمی باشند . در اين مبحث به بررسی عملگرهايی که عملوندی از نوع اشاره گر می توانند داشته باشند و نحوه کاربرد آنها می پردازيم .

   يک اشاره گر می تواند افزايش (++) يا کاهش (--) يابد . يک عدد صحيح می تواند به آن اضافه (=+ يا +) و يا از آن کم (=- يا -) شود .

   فرض کنيد که آرايهint v[5] تعريف شده است و اولين خانه آن در آدرس 3000 از حافظه قرار دارد و فرض کنيد که vptr به خانهv[0] از آرايه اشاره می کند . توجه داشته باشيد که برای اينکه vptr به آرايه v اشاره کند کافی است از يکی از دستورات زير استفاده کنيم :

vptr = v;
vptr = &v[0];

   در رياضيات معمول 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 -= 4;

باعث می شود که vptr به خانه(3016 - 4*4)3000 يعنیv[0] اشاره کند .

   هر يک از دستورات زير باعث می شود که اشاره گر به خانه بعدی آرايه v ، اشاره کند .

++vptr;
vptr++;

و هر يک از دستورات زير باعث می شود که اشاره گر به خانه قبلی آرايه v ، اشاره کند .

--vptr;
vptr--;

   اشاره گرهايی که به خانه های يک آرايه اشاره می کنند می توانند از يکديگر کم شوند . به عنوان مثال اگر vptr حاوی 3000 (يعنی به خانهv[0] اشاره کند ) و v2ptr حاوی 3008 ( يعنی به خانهv[2] اشاره کند ) دستور زير :

x=v2ptr - vptr;

   تعداد خانه های بين vptr تا v2ptr را در x قرار می دهد که در اينجا x حاوی 2 می گردد . محاسبات اشاره گرها تنها هنگامی که اشاره گرها به خانه های يک آرايه اشاره می کنند ، معنا دار هستند . همچنين مقايسه اشاره گرها نيز هنگامی مفهوم دارد که به خانه های يک آرايه اشاره کنند به عنوان مثال مقايسه دو اشاره گر می تواند نشان دهد که يکی از اشاره گرها به خانه ای با انديس بزرگتر نسبت به اشاره گر ديگر ، اشاره می کند .

 

 

   معرفی کامپيوتروبرنامه نويسی

   ساختارهای کنترلی

   توابع

   آرايه ها

   اشاره گر ها و رشته ها

   کلاسها

   گرانبار کردن عملگر ها

 
 
 
   
 
 
 

حق کپی رایت محفوظ می باشد