آرایه ها و اشاره گرهای ++C – راهنمای جامع
در این مقاله در مورد رابطه بین آرایه ها و اشاره گرهای ++C و همچنین استفاده مؤثر از آنها در برنامهها صحبت خواهیم کرد. برای مطالعه بخش قبلی این سری مقالات راهنمای جامع ++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 زیر برای درج و نمایش دادههای وارد شده با استفاده از نمادگذاری اشارهگر نوشته شده است:
خروجی
بدین ترتیب به پایان این مقاله میرسیم. برای مطالعه بخش بعدی این سری مقالات روی لینک زیر کلیک کنید:
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی
- آموزش برنامه نویسی C++
- مجموعه آموزشهای دروس علوم و مهندسی کامپیوتر
- آموزش ++C — راهنمای شروع یادگیری
- Overload کردن عملگر در ++C — راهنمای جامع
==












