عملگر آدرس (&) عملگری است که آدرس خانه حافظه عملوند خود
را بر می گرداند .
int y=5;
int *yPtr;
yPtr = &y;
دستورات فوق متغير
y
را از نوع
int
با عدد 5 مقدار دهی کرده و سپس
yPtr
، اشاره گری به متغيری از نوع
int
تعريف می شود و سرانجام آدرس خانه حافظه
y
در
yPtr
قرار می گيرد .
همانطور که در شکل فوق می بينيد ،
yPtr
حاوی آدرس خانه حافظه
y
می باشد .
برای آشنايی با نحوه استفاده از اشاره گرها به برنامه زير توجه
کنيد :
#include <iostream.h>
void main ()
{
int x = 5, y = 15;
int *xPtr, *yPtr;
xPtr = &x;
yPtr = &y;
cout << "The value of x is " << x
<< "\nThe address of x is " << &x
<< "\nThe value of xPtr is " << xPtr;
cout << "\n\nThe value of y is " << y
<< "\nThe address of y is " << &y
<< "\nThe value of yPtr is " << yPtr;
*xPtr = 10;
cout << "\n\nx=" << x << " and y=" << y;
*yPtr = *xPtr;
cout << "\nx=" << x << " and y=" << y;
xPtr = yPtr;
cout << "\nx=" << x << " and y=" << y;
*xPtr = 20;
cout << "\nx=" << x << " and y=" << y;
}
خروجی برنامه فوق به صورت زير می باشد :
The value of x is 5
The address of x is 0x8fb4fff4
The value of xPtr is 0x8fb4fff4
The value of y is 15
The address of y is 0x8fb4fff2
The value of yPtr is 0x8fb4fff2
x=10 and y=15
x=10 and y=10
x=10 and y=10
x=10 and y=20
در برنامه فوق دو متغير
x
وy
از نوع عدد صحيح تعريف شده و
x
حاوی 5 و
y
حاوی 15 می گردد سپس
xPtr
و
yPtr
اشاره گری به عدد صحيح تعريف می شوند .
دو دستور فوق همانطور که در خروجی برنامه نيز می بيند ، آدرس خانه
حافظه
x
را در
xPtr
و آدرس خانه حافظه
y
را در
yPtr
قرار می دهد .
دستور
*xPtr = 10;
در خانه ای از حافظه که
xPtr
اشاره می کند ( يعنی متغير
x
) عدد 10 را قرار می دهد سپس*yPtr
= *xPtr;
مقدار خانه حافظه ای که
xPtr
به آن اشاره می کند را در خانه ای از حافظه که
yPtr
به آن اشاره می کند قرار می دهد يعنی مقدار متغير
x
در متغير
y
قرار می گيرد .
دستور
xPtr = yPtr;
مقدار
yPtr
را که همان آدرس خانه حافظه
y
می باشد در
xPtr
قرار می دهد پس با اجرای اين دستور
xPtr
ديگر به
x
اشاره نمی کند بلکه به
y
اشاره خواهد کرد ، لذا با اجرای دستور
*xPtr = 20;
همانطور که مشاهده می کنيد
x
حاوی 20 نمی شود بلکه اين مقدار
y
است که به 20 تغيير می يابد . |