loading...
دانلود سرای دانشجویی

اشاره گر و آرايه

ارتباط خاصی بين اشاره گرها و آرايه ها در ++C وجود دارد. از اشاره گرمی توان برای پيمايش آرايه ها استفاده کرد. در حقيقت اسم يک آرايه بدون هيچ انديسی اشاره گری به اولين خانه آن است. اگر آرايه ای به نام []array تعريف کرده باشيد array به اولين خانه آرايه اشاره می کند. بنابراين می توان به صورت غير مستقيم توسط عملگر * به عناصر آن دسترسی پيدا کرد. يعنی *array اولين خانه آرايه است و *(array+1) خانه دوم و به همين ترتيب الی آخر.

*(array) == array[0]
*(array + 1) == array[1]
*(array + 2) == array[2]
...
*(array + n) == array[n]

به عملگر & برای بدست آوردن آدرس آرايه نياز نيست البته می توان توسط &array[0] هم آدرس اولين عنصر آرايه را بدست آورد يعنی array == &array[0].


مثال. برنامه زير عناصر آرايه A را توسط اشاره گر نمايش می دهد.

#define MAX 10
int A[MAX] = {100, 90, 80, 70, 60, 50, 40, 30, 20, 10};
for (int i=0 ; i<10 ; i++)
   cout << *(A+i) << endl;

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


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


اشاره گر و رشته

رشته يک آرايه کاراکتری است که به کاراکتر null ختم می شود. مانند آرايه نام رشته اشاره گری به اولين کاراکتر آن است بنابراين برای کار با رشته ها يک اشاره گر به کاراکتر بکار می آيد.


مثال. متغير Msg1 اشاره گری به کاراکتر است که با يک ثابت رشته ای مقداردهی اوليه شده است. 1Msg به اولين کاراکتر اين رشته اشاره می کند.

char *Msg1 = "This is a message";


راه ديگر برای استفاده اشاره گر برای رشته ها اختصاص فضای پويا به متغير اشاره گر است.


مثال. Msg2 متغير اشاره گری است که در حافظه پويا ايجاد شده است.

Msg2 = new char[16];
if (Msg2 == NULL) {
   cerr << "Could not allocate sufficient space" << endl;
   exit(1);
   }
strcpy(Msg2, "A new message");
cout << Msg2 << endl;
delete [] Msg2;

ارسال نظر برای این مطلب

کد امنیتی رفرش
اطلاعات کاربری
آمار سایت
  • کل مطالب : 4247
  • کل نظرات : 0
  • افراد آنلاین : 8
  • تعداد اعضا : 2927
  • آی پی امروز : 163
  • آی پی دیروز : 199
  • بازدید امروز : 784
  • باردید دیروز : 1,059
  • گوگل امروز : 10
  • گوگل دیروز : 19
  • بازدید هفته : 5,580
  • بازدید ماه : 33,478
  • بازدید سال : 248,857
  • بازدید کلی : 8,427,551
  • کدهای اختصاصی