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

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

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

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

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

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

ptr1 – ptr2

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

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

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

 

ptr1 < ptr2

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