جایگاه اشاره گرها در زبان C – بخش سوم

در صورتی که بخش اول و دوم رو مطالعه نکردید که در درک درست این بخش با مشکل روبرو بشید، پیشنهاد می کنم، بخشهای قبل رو ابتدا مطالعه کنید.

۲-۲– اعمال محاسباتی جمع و تفریق

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

 

 

۲-۳– عمل مقایسه اشاره گرها

اگر p1 و p2 دو اشارگر باشند، با استفاده از عملگرهای رابطه ای مانند متغیر های معمولی با هم مقایسه می شوند. یعنی مقدار آدرس هر یک از اشاره گرها، عدد بزرگتری باشد، آن اشاره گر بزرگتر خواهد بود.

int table[5]={1,4,5,2,3};
int *p,*q;
p=table;
q=&table[1];
…
if(p!=q) …

مثال: با استفاده از دستورات زیر، دو اشاره گر p1 و p2 با هم مقایسه می شوند. فرض کنید p1 به محل ۱۰۰۰ حافظه و p2 به محل ۱۰۰۲ حافظه اشاره می کند. در این صورت شرط (p1==p2) ارزش نادرستی دارد.

 

به کاربرد دوگانه اپراتور * در زمینه اشاره گرها دقت نمائید:

void change(int *p,int *q)
{ int t;
t=*p;
*p=*q;
*q=t;
}

توضیح:
خط ۱: تعریف یک متغیر از نوع اشاره گر با استفاده از اپراتور *
خط ۳: دسترسی به محتوی حافظه از طریق اپراتور *