close
دانلود فیلم
نکته. اگر اشاره گر

محاسبات روی اشاره گر

عملیات جمع، تفریق، افزایش و کاهش را می توان روی متغيرهای اشاره گر انجام داد. چون اشاره گر آدرسی در حافظه است وقتی محاسباتی روی آن انجام می گیرد رفتار متفاوتی نشان می دهد. وقتی عمل جمع عددی با متغير اشاره گر صورت می گيرد اشاره گر به اندازه حاصلضرب عدد در تعداد بایت های نوع داده ای که اشاره می کند جلو می رود. همين برای عمل تفريق هم صدق می کند. اگر مقداری از متغير اشاره گر کم شود در محاسبات تعداد بايت های نوع داده محسوب می شود.

عملگر افزایش (++) مقدار متغیر را یکی اضافه می کند در حالیکه متغير اشاره گر را به تعداد بایت های نوع داده آن حرکت می دهد. اگر یک اشاره گر به عدد float دارید چون نوع float چهار بایت دارد با افزایش اشاره گر 4 واحد به آن اضافه می شود. بنابراین به 4 بایت بعدی حافظه اشاره می کند و دیگر به همان 4 بایت قبلی اشاره نمی کند.


مثال. اگر int را چهاربايت درنظر بگيريم، اشاره گر p هشت بايت به جلو حرکت می کند.

int a;
int p;
p=&a;
p=p+2;


عمل ديگری که روی اشاره گر ها انجام می شو تفاضل است. می توان مقدار دو اشاره گر را از هم کم کرد و فاصله بين آنها را بدست آورد.


مثال. اگر ptr1 و ptr2‌ هر دو اشاره گر باشند عبارت زير اختلاف فاصله آنها را می دهد.

ptr1 - ptr2


نکته. اگر اشاره گر به محل ناشناخته ای از حافظه حرکت کند و عملی روی آن انجام دهید ممکن است عملیات برنامه های دیگر کامپیوتر را با اشکال مواجه کنید.

مقايسه دو متغير اشاره گر با هم تنها زمانی معتبر است که هردو به يک نوع داده اشاره کنند.


مثال. عبارت زير زمانی درست است که اشاره گر ptr1 به آدرسی قبل از ptr2 اشاره کند.

ptr1 < ptr2


توجه کنيد که عمل‍يات ضرب و تقسیم روی یک اشاره گر انجام نمی گيرد و باعث بروز خطای کامپايلر می شود.

به کانال تلگرام سایت ما بپیوندید