آگوست 25, 2019 Mostafa بدون دیدگاه

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

توجه : درخواست افزونه ،قالب، اسکریپت و نرم افزار و ... و سوالات و مشکلات خود را در انجمن ارسال نمایید

تعریف اشاره گر در زبان برنامه نویسی c++ :
به زبان ساده، اشاره‌گر نوعی متغیر است که محتوای آن آدرس یکی از خانه‌های حافظه‌ی کامپیوتر است.
برای کار با اشاره گرها در c++ وقتی عملیات خواندن و نوشتن صادر می شود باید مشخص باشد که این عملیات روی کدامیک از بایت های حافظه صورت گیرد و برای این منظور برای هر یک از خانه های حافظه یک ادرس در نظر گرفته شده است که یک عدد صحیح مثبت است. دسترسی به خانه های حافظه از طریق آدرسش صورت میگیرد.در حافظه ی اصلی به قطعات مساوی با طول تقسیم شده است که به هریک از آن ها یک گوییم.
در داخل هر بایت ها از صفر تا شماره گذاری شده اند.برای دسترسی به یک بایت در داخل یک کافی است در داخل یک تفاوت مکان آن نسبت به ابتدای را بدانیم.که به آن گوییم. آدرس خانه های حافظه به صورت زیر ساخته میشوند.
off set : segment آدرس شروع
اشاره گر : متغیر دوبایتی است که آدرس حافظه را در خود نگه میدارد.

نوع اشاره گر *
; نام اشاره گر
نوع اشاره گر نوع مقداری را که اشاره گر به آن اشاره می نماید مشخص میکند.

void main ()
{
int a , *p1;
float f , *p2;
char c , *p3;
}

مثال بالا ۱۳ بایت خالی میکنند.
برای دسترسی به محتویات محلی که اشاره گر در c++ به آن اشاره میکند به صورت زیر عمل میکنیم.
p : p محتویات اشاره گر
* p : محتویات محلی که به آن اشاره میکند
برای مثال دستور عدد ۲۰ را دذ خانه ی شماره ۱۰۰۰ قرار میدهد چون از نوع است در خانه ی و قرار میگیرد.
مثال :

void main ()
{
int a , *p ;
p = & a ;
*p =20 ;
(*p)++ ;
cout<< a ;
cout<< *p ;
scanf ( " %d " , p) ;
printf ( " %p " , p) ;
}

یک عدد صحیح دریافت میشود و در محلی که به آن اشاره میکند یعنی متغیر قرار داده میشود.
در قسمت ینی آدرس متغیر چاپ میشود.
عملگرهای جمع و تفریق و همچنین ++ و – – را در مورد اشاره گرها نیز میتوان به کار برد.
نوع اشاره گر در میزان افزایش یا کاهش آن تاثیر دارد مثلا اگر اشاره گری از نوع تعریف شده باشد با ++ دو واحد به آن افزوده میشود.
مثال :

void main ()
{
int * a = ( int * ) 1000 ;
fioat * b = ( float * ) 1000 ;
char * c = ( char * ) 1000 ;
a++ ; b++ ; c++ ;
}

کار با آرایه ها از طریق اشاره گر ها در c++ :

نام آرایه در خود آدرس شروع آرایه را دارد بنابراین نام آرایه یک برای کار با اشاره گرها در c++ می باشد که به ابتدای آرایه اشاره میکند.محتویات این اشاره گر را میتوان تغییر داد لذا به آن یک اشاره گر غیرقابل انتقال میگوییم. میتوان آدرس شروع آرایه را در یک اشاره گر معمولی ذخیره کرد سپس از طریق اشاره گر با آرایه کار کرد.

void main ()
{
int a[10] , * p ;
int i ;
p = a ;
for ( i=0 ; i<10 ; i++ , p++ )
scanf ( " %d " , p ) ;
p = a ;
for ( i=0 ; i<10 ; i++ )
printf ( " %d " , * (p+i)) ;
}

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

a[3] =10
* (p+3)=10
* (a+3)=10
p[3] =10

مثال :
برنامه ای بنویسید که یک رشته را گرفته و طولش را محاسبه و چاپ کند.

void main()
{
char s[100] , * p ;
int i ;
gets(s) ;
p =s;
for( i=0 , * p ; p++ , i++)
cout<< i ;
}