اشاره گر ها (pointers)
سه شنبه, ۷ خرداد ۱۳۹۲، ۰۸:۲۹ ب.ظ
به نام خدا
سلام امروز یکم کد می خونیم.
قرارم هست که در مورد اشاره گر ها بحث کنیم.
بریم که شروع کنیم...
آدرس و اشاره گر :هر متغیری که تعریف می کنید یک حافظه به آن اختصاص داده می شود. این حافظه بخشی از حافظه اصلی (RAM) می باشد که دارای یک آدرس نیز هست.
هر مقداری که در این متغیر قرار دهید ، در این حافظه قرار می گیرد ؛ برای مثال :
;int a
این تعریف باعث می شود که یک حافظه دو بایتی برای a اختصاص پیدا کند.
این تعریف باعث می شود که یک حافظه دو بایتی برای a اختصاص پیدا کند.
هر متغیری یک آدرس اصلی در حافظه دارد. عملگر & آدرس یک متغیر را نشان می دهد.
چنانچه این عملگر را قبل از نام متغیر قید کنید ، آدرس آن متغیر بدست می آید ؛ به عنوان مثال :
اگر متغیری با نام x وجود داشته یاشد ، آدرس آن برابر با x& می باشد.
از آنجاییکه هر متغیر یک آدرس در حافظه دارد ، امکان تعریف اشاره گر به متغیر وجود دارد.
هر اشاره گر می تواند آدرس یک متغیر را داشته باشد.
و از طریق آن اشاره گر می توان به محتویات آن متغیر دسترسی پیدا کرد.
برای هر نوع داده بایستی اشاره گری مربوط به آن نوع داده را تعریف کرد.
به تعریف کلی اشاره گر دقّت نمایید:
; نام اشاره گر * نوع داده
;int *a
در تعریف فوق یک اشاره گر به نوع داده ی int تعریف شده است.
پس x آدرس یک متغیر از نوع داده ی صحیح است و x* محتوای آن آدرس را نشان می دهد که از نوع عدد صحیح می باشد.
به این نمونه دقت کنید :
همان طور که مشاهده می کنید ، a یک متغیّر و b یک اشاره گر از همان نوع است.
a با مقدار 10 ، مقدار دهی شده است.
در خطّ سوم آدرس متغیر a در b قرار گرفته ؛
حال b* دارای مقدار قرار گرفته در آدرس b (آدرس a&) می باشد که همان مقدار متغیر a ، یعنی عدد 10 می باشد.
بنا براین خروجی این برنامه همان عدد 10 است.
پیروز و سربلند.
خدا نگهدار.
پس x آدرس یک متغیر از نوع داده ی صحیح است و x* محتوای آن آدرس را نشان می دهد که از نوع عدد صحیح می باشد.
به این نمونه دقت کنید :
همان طور که مشاهده می کنید ، a یک متغیّر و b یک اشاره گر از همان نوع است.
a با مقدار 10 ، مقدار دهی شده است.
در خطّ سوم آدرس متغیر a در b قرار گرفته ؛
حال b* دارای مقدار قرار گرفته در آدرس b (آدرس a&) می باشد که همان مقدار متغیر a ، یعنی عدد 10 می باشد.
بنا براین خروجی این برنامه همان عدد 10 است.
پیروز و سربلند.
خدا نگهدار.
int a,*b;
a=10;
b=&a;
cout<<" *b = "<<(*b)<<endl;
return 0;