آرایه ها و اشاره گرهای ++C – راهنمای جامع

۲۹۱۴
۱۴۰۲/۰۶/۲۹
۳ دقیقه
PDF
آموزش متنی جامع
امکان دانلود نسخه PDF

در این مقاله در مورد رابطه بین آرایه ها و اشاره گرهای ++C و همچنین استفاده مؤثر از آن‌ها در برنامه‌ها صحبت خواهیم کرد. برای مطالعه بخش قبلی این سری مقالات راهنمای جامع ++C، روی لینک زیر کلیک کنید:

آرایه ها و اشاره گرهای ++C – راهنمای جامعآرایه ها و اشاره گرهای ++C – راهنمای جامع
فهرست مطالب این نوشته
997696

اشاره‌گرها متغیرهایی هستند که آدرس حافظه را نگه‌داری می‌کنند. اشاره‌گرها نه‌تنها می‌توانند آدرس یک متغیر منفرد را نگهداری کنند، بلکه قادر هستند آدرس سلول‌های آرایه را نیز ذخیره کنند. به مثال زیر توجه کنید:

آرایه ها و اشاره گرهای ++C

فرض کنید لازم است اشاره‌گر به عنصر چهارم یک آرایه اشاره کند، یعنی باید آدرس عنصر چهارم را در مثال فوق ذخیره کند.

از آنجا که در مثال فوق ptr به عنصر سوم اشاره می‌کند، ptr+1 به عنصر چهارم اشاره خواهد کرد.

ممکن است فکر کنید که ptr+1 آدرس بایت بعد از ptr را ارائه می‌کند، اما چنین نیست.

دلیل این امر آن است که ptr اشاره‌گری به یک int است و اندازه آن به نوع سیستم عامل بستگی دارد. چنان که در سیستم‌های 64 بیتی اندازه int برابر با 4 بایت و در سیستم‌های 32 بیتی برابر با 2 بایت است. بدین ترتیب آدرس بیت ptr و ptr+1 چهار بایت فرق می‌کند.

اگر اشاره‌گر ptr به char اشاره کند در این صورت آدرس بین ptr و ptr+1 یک بایت تفاوت خواهد داشت زیرا اندازه نوع داده کاراکتر برابر با 1 بایت است.

مثال 1

برنامه ++C زیر برای نمایش آدرس عناصر یک آرایه با استفاده همزمان از آرایه و اشاره‌گر استفاده می‌شود.

خروجی

در برنامه فوق یک اشاره‌گر متفاوت ptr برای نمایش دادن آدرس عنصر آرایه arr استفاده می‌شود.

اما عناصر آرایه می‌توانند با استفاده از نمادگذاری اشاره‌گر با بهره‌گیری از نام آرایه یعنی arr نیز مورد دسترسی قرار گیرند. به مثال زیر توجه کنید:

مثال 2

برنامه ++C زیر برای نمایش آدرس عناصر آرایه با استفاده از نمادگذاری اشاره‌گر نوشته شده است:

خروجی

می‌دانیم که اشاره‌گر ptr آدرس را نگهداری می‌کند و عبارت ptr* مقدار ذخیره‌شده در آن آدرس را به دست می‌دهد. به طور مشابه می‌توان مقدار ذخیره‌شده در اشاره‌گر ptr+ را با استفاده از (ptr + 1)* به دست آورد. به کد زیر توجه کنید:

  • ptr[0]& برابر است با ptr و ptr* برابر است با ptr[0]
  • ptr[1]& برابر است با ptr + 1 و (ptr + 1)* برابر است با ptr[1]
  • ptr[2]& برابر است با ptr + 2 و (ptr + 2)* برابر است با ptr[2]
  • ptr[i]& برابر است با ptr + i و (ptr + i)* برابر است با ptr[i]

مثال 3

برنامه ++C زیر برای درج و نمایش داده‌های وارد شده با استفاده از نمادگذاری اشاره‌گر نوشته شده است:

خروجی

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

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۸ نفر
آیا این مطلب برای شما مفید بود؟
اگر پرسشی درباره این مطلب دارید، آن را با ما مطرح کنید.
منابع:
programiz
PDF
مطالب مرتبط
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *