آرایه ها در زبان C – از صفر تا صد با مثال و کد
![آرایه ها در زبان C – از صفر تا صد با مثال و کد](https://blog.faradars.org/wp-content/uploads/2024/12/Arrays-in-C-150x150.jpg)
![آرایه ها در زبان C – از صفر تا صد با مثال و کد](https://blog.faradars.org/wp-content/uploads/2024/12/Arrays-in-C.jpg)
آرایه در زبان C به مجموعه همگن و با اندازه ثابتی از دادهها گفته میشود که عناصر آن به صورت متوالی و چسبیده بهم در حافظه کامپیوتر ذخیره میشوند. اندازه آرایه محدودیت ندارد اما در زمان تعریف باید مقدار آن را معین کرد و قابل تغییر نیست. آرایه ها در زبان C یکی از پراستفادهترین ساختمانهای داده هستند. به طور کلی، ساختمان داده آرایه در برنامه نویسی، روشی ساده و سریع برای ذخیره کردن چندین مقدار مختلف تحت عنوان یک نام مشترک است. آرایه در زبان C نیز به همینمنظور به کار برده میشود. یعنی برای نگهداری توالی از عناصر با نوع داده یکسان و با اندازه ثابت از آرایه استفاده میشود. با اینکه از آرایه برای ذخیرهسازی مجموعهای از دادهها کمک گرفته میشود اما معمولا بهتر است که آن را به عنوان مجموعهای از متغیرها در نظر بگیریم که حاوی دادههایی با نوع یکسان هستند.
در این مطلب از مجله فرادرس به بررسی آرایه ها در زبان برنامه نویسی C از زوایای مختلف پرداختهایم. برای مثال میتوان به تعریف آرایه، ایجاد، مقداردهی، انواع، سینتکس مزایا، معایب و موارد دیگر اشاره کرد.
آرایه ها در زبان C چه هستند؟
آرایه در زبان برنامه نویسی C به مجموعهای از عناصر دادهای با نوع یکسان گفته میشود که در فضاهای پشت سر هم در حافظه ذخیره شدهاند. مقادیر تشکیل دهنده آرایه هم میتوانند از نوعهای اصلی زبان C مانند انواع Int و Float و Char بوده و هم از انواع تعریف شده توسط کاربر مانند ساختارها یا نشانگرها تشکیل شوند. در زبان C نوع عناصر ذخیره شده در آرایه باید با نوع داده خود آرایه یکسان باشند.
![تصویری از یک آرایه معمولی - آرایه ها در زبان C](https://blog.faradars.org/wp-content/uploads/2024/12/Arrays-in-C.png)
ساخت آرایه ها در زبان C
آرایهها هم در زبان C، باید مانند باقی متغیرها قبل از استفاده، تعریف شوند. آرایه را میتوان با مشخص کردن نام، نوع عناصر و اندازه ابعاد آن تعریف کرد. در این زبان، وقتی دستور تعریف آرایهای را صادر میکنیم، کامپایلر، فضای مشخصی از بلوک حافظه را به اندازه مورد نیاز آرایه انتخاب کرده و به آن اختصاص میدهد. در صورت تمایل به استفاده از فیلمهای آموزشی برای فراگیری کار با آرایهها در زبان C میتوانید فیلم آموزش رایگان آرایه ها در زبان برنامه نویسی C را از فرادرس مشاهده کنید. به منظور کمک به مخاطبان مجله، لینک مربوط به این فیلم را در پایین نیز قرار دادهایم.
سینتکس مورد استفاده برای تعریف آرایه در زبان C
در کادر زیر، دو نوع سینتکس کلی برای تعریف آرایه ها در زبان C را نمایش دادهایم.
سینتکسهای نمایش داده شده، به ترتیب از بالا به پایین برای تعریف آرایههای یکبُعدی و چندبُعدی به کار میروند. کدهای بالا از چند پارامتر مختلف استفاده کردهاند. همه آن پارامترها را در فهرست زیر معرفی کردیم.
- data_type: این پارامتر نوعی را مشخص میکند که مقادیر آرایه باید باشند. آرایه، مقادیر دارای نوعهای دیگر را نمیپذیرد.
- array_name: نام آرایه را در این جایگاه مینویسیم.
- size: این پارامتر اندازه آرایه را نشان میدهد. اندازه آرایه بدون محدودیت است.
- [size1]: تعداد این پارامترها تعداد ابعاد آرایه را نشان میدهند. آرایههای میتوانند ابعاد زیادی داشته باشند اما معمولا بیش از ۳ بُعد را استفاده نمیکنند. کاراکتر N نشان دهنده تعداد ابعاد آرایه است.
![](https://blog.faradars.org/wp-content/uploads/2024/12/c-array-declaration-2.png.webp)
آرایههای زبان C به طور ذاتی ایستا هستند. یعنی اینکه فضای مورد نیاز برای استفاده توسط این آرایهها در حافظه در همان زمان کامپایل مشخص شده و به آنها اختصاص داده میشود.
در ادامه مطلب، برای تعریف آرایه در زبان C مثالی را نمایش دادهایم.
مثال تعریف آرایه
در کادر زیر، برنامه سادهای را با زبان C نوشتهایم که در آن فرایند تعریف آرایه نمایش داده شده است.
مقدار دهی به آرایه
در زبان C، مقداردهی به آرایه به فرایندی گفته میشود که در طی آن چند مقدار اولیه به متغیر C اختصاص داده میشود. به این مسئله توجه کنید که در ابتدای تعریف آرایه و تخصیص مقدار مشخصی از حافظه به آن، عناصر آرایه حاوی مقدارهای زائد هستند. بنابراین باید خانههای آرایه را با مقدارهای با معنایی پُر کنیم.
برای مقداردهی آرایه در زبان C چندین روش مختلف وجود دارند که در این بخش به بررسی همه آنها پرداختهایم.
مقداردهی اولیه آرایه در زمان تعریف
در این روش، همزمان با آرایه، مقادیری را نیز برای جاگرفتن در خانههای آن مشخص میکنیم. یعنی در ابتدا با استفاده از لیست مقداردهی، چندین عنصر مختلف را به آرایه اختصاص میدهیم. «لیست مقداردهی» (Initializer List) لیستی است که از مقادیر محصور شده در داخل آکولادهای باز و بسته {} تشکیل شده است. این مقداری با استفاده از کاما از یکدیگر جدا شدهاند.
در سینتکس زیر روش تعریف و مقداردهی همزمان آرایه را نمایش دادهایم.
در تصویر زیر میبینید که بعد از مقداردهی اولیه به آرایه، عناصر با چه ترتیبی در خانههای آرایه قرار میگیرند.
![تخصیص حافظه و مقداردهی به آن - آرایه ها در زبان C](https://blog.faradars.org/wp-content/uploads/2024/12/C-array-initialization-3.png)
مقداردهی و تعریف آرایه بدون تعیین اندازه
اگر با استفاده از لیست مقداردهی، مقادیری را به آرایهای اختصاص دهیم، میتوانیم مرحله تعریف اندازه آرایه را دور بزنیم. زیرا در این روش، کامپایلر میتواند به صورت خودکار اندازه آرایه را تشخیص دهد. در این موارد، کامپایلر برای استنباط کردن اندازه آرایه باید به لیست مقداردهی نگاه کند. در واقع کامپایلر اندازه آرایه را برابر با تعداد عناصر مشخص شده در لیست مقداردهی در نظر میگیرد.
در سینتکس زیر، روش مقداردهی آرایه را بدون تعیین کردن مستقیم اندازه، نمایش دادهایم.
اندازه آرایه بالا برابر با ۵ است. کامپایلر به صورت خودکار تعداد عناصر را نگاه کرده و اندازه آرایه را تشخیص میدهد.
استفاده از حلقه برای مقداردهی آرایه بعد از تعریف
آرایه را بعد از تعریف کردن هم میتوان مقداردهی کرد. به این منظور باید مقادیری را به هر عنصر در آرایه به صورت مجزا اختصاص داد. برای تخصیص مقادیر به عناصر آرایه میتوان از حلقهی For، حلقهی While و حلقهی Do-While در برنامه نویسی استفاده کرد.
در کادر زیر، سینتکس مربوط به مقداردهی آرایه را با استفاده از حلقهی For در برنامه نویسی، نمایش دادهایم.
با توجه به سینتکس بالا، در کدهای زیر مثالی را درباره مقداردهی آرایه در زبان برنامه نویسی C پیادهسازی کردهایم. مثال پایین، شامل هر سه روش مقداردهی - با استفاده از حلقههای For و While و Do-While - است.
مجموعه آموزش زبان برنامه نویسی C
زبان برنامه نویسی C، زبانی سطح بالا است. این زبان در دهه ۱۹۷۰ میلادی توسط «دنیس ریچی» (Dennis Ritchie) و در «آزمایشگاه بل» (Bell Labs) توسعه داده شد. C زبان پراستفاده و تاثیرگذاری در تاریخ برنامه نویسی است و به عنوان زبان پایه برای طراحی و توسعه سیستم عاملهای مختلفی مانند لینوکس شناخته میشود. حتی بسیاری از زبانهای برنامه نویسی دیگر نیز با کمک C توسعه داده شدهاند. به همین دلیل معمولا جزو اولین گزینههای آموزش برنامه نویسی در دانشگاهها به دانشجویان تازه وارد است. همچنین، میتوان گفت همیشه موقعیتهای شغلی مختلفی برای توسعهدهندگان زبان C وجود دارد.
![آموزش برنامه نویسی C – جامع و با نکات کاربردی](https://blog.faradars.org/wp-content/uploads/2024/12/C-Programming-learning-collection.png)
هنوز این زبان جایگاه خود را بین برنامه نویسان حفظ کرده است. مخصوصا در برنامههای بسیار تخصصی که با سختافزار کار میکنند، استفاده از C یکی از گزینههای اصلی است. سرعت بسیار بالای C باعث شده که حتی بعضی از کتابخانههای زبان پایتون نیز توسط آن توسعه داده شوند. به همین دلیل در فرادرس تلاش کردیم مجموعه آموزش غنی و حرفهای را برای این زبان فراهم کنیم. در نتیجه علاقهمندان به برنامه نویسی میتوانند به شکل سریعتر و بهتری مهارتهای آن را فرا بگیرند. در پایین چند مورد از فیلمهای آموزش زبان C را معرفی کردهایم.
- فیلم آموزش برنامه نویسی C به صورت جامع و با نکات کاربردی با فرادرس
- فیلم آموزش رایگان معرفی اجزای سازنده یک برنامه C با فرادرس
- فیلم آموزش رایگان ساختار Structure و یونیون Union در برنامه نویسی C با فرادرس
- فیلم آموزش پروژه محور C درباره پیاده سازی بازی Snake در فرادرس
دسترسی به عناصر آرایه ها در زبان C
با استفاده از اندیس مربوط به خانههای آرایه میتوانیم به تمام عناصر درون آن خانهها دسترسی داشته باشیم. برای این کار از براکتهای باز و بسته در مقابل نام آرایه و شماره اندیس مربوط به مقدار مورد نظر استفاده میکنیم.
لازم به اشاره است که اندیسگذاری در آرایهها همیشه با عدد صفر شروع میشود. یعنی اینکه اولین عنصر همیشه در اندیس شماره «۰» قرار دارد. در ضمن وقتی که «N» برابر با تعداد عناصر آرایه است، شماره اندیس آخرین عنصر هم برابر با «N-۱» میشود.
در کادر زیر، مثالی از دسترسی به عناصر مختلف در آرایه را پیادهسازی کردهایم. برای دسترسی به عناصر در مثال زیر از اندیسهای آرایه کمک میگیریم.
بعد از اجرای کد بالا خروجی زیر تولید شده و در کنسول زبان برنامه نویسی C نمایش داده میشود.
Element at arr[2]: 35 Element at arr[4]: 55 Element at arr[0]: 15
به روز رسانی عنصر آرایه
در این بخش از مطلب روش بهروزرسانی آرایه را بیان کردهایم. مقدار موجود در تمام عناصر آرایه را با توجه به آدرسی که مشخص شده میتوان بهروزرسانی کرد. این کار شبیه به دسترسی به مقدار موجود در آن عنصر با استفاده از اندیس و عملگر تخصیص - همان مساوی = - است.
پیمایش بر روی عناصر آرایه ها در زبان C
پیمایش فرایندی است که در آن تمام عناصر ساختمان داده مورد نظر را یک به یک ملاقات میکنیم. برای پیمایش بر روی عناصر آرایه ها در زبان C از انواع حلقهها استفاده میکنیم. به طور کلی آموزش کار با زبان C یکی از روشهایی است که بعد از آن مسیر درک و آموزش سایر زبانهای برنامهنویسی بسیار سادهتر میشود. زیرا این زبان منشا ایجاد زبانهای برنامهنویسی جدیدتری مانند C++ و جاوا و C# است. برای آموزش حرفهای برنامه نویسی با C پیشنهاد میکنیم که فیلم آموزش برنامه نویسی C به شکل جامع و با نکات کاربردی را از فرادرس مشاهده کنید. لینک مربوط به این فیلم را در پایین نیز قرار دادهایم.
پیمایش بر روی آرایه با استفاده از حلقه For
در کادر زیر، روش پیمایش بر روی آرایه را با استفاده از حلقه for نمایش دادهایم.
در کدهای بالا i پارامتر شمارنده برای این پیمایشگر است و N نشاندهنده تعداد خانههایی است که باید پیمایش شوند. مقدار N کوچکتر از تعداد کل عناصر آرایه است.
![](https://blog.faradars.org/wp-content/uploads/2024/12/C-array-traversal.png.webp)
چگونه در زبان C از آرایه ها استفاده کنیم؟
در برنامه زیر، روش استفاده از آرایه را در زبان برنامه نویسی C نمایش دادهایم.
بعد از اجرای کد بالا، خروجی زیر به عنوان نتیجه در کنسول نمایش داده میشود.
Elements in Array: 10 20 100 40 50
در ادامه به بررسی انواع آرایههای موجود در زبان C پرداخته و روش استفاده از هر کدام را نمایش دادهایم.
انواع آرایه در زبان C
در زبان برنامه نویسی C، بر اساس تعداد ابعاد میتوان آرایهها را به دو دسته کلی تقسیم کرد.
- آرایههای یکبُعدی
- آرایههای چندبُعدی
در ادامه این بخش از مطلب انواع آرایهها را با نمایش مثالهای کدنویسی شده بررسی کردهایم.
آرایه های یک بُعدی
آرایههای یکبُعدی، با نام آرایههای «1D» نیز شناخته میشوند. ساختار این نوع آرایه در زبان C، به شکلی است که فقط یک بُعد دارد. برای درک این مطلب ابتدا به سینتکس مورد استفاده برای تعریف آنها توجه کنید.
در تصویر زیر، نمونه کامل با تعداد فرضی عنصر از آرایه یکبُعدی را مشاهده میکنید.
![](https://blog.faradars.org/wp-content/uploads/2024/12/1d-array-5.png.webp)
این آرایه، ساختار بسیار سادهای دارد. در کادر زیر، درباره استفاده از آرایه یک بُعدی، مثال سادهای را پیادهسازی کردهایم.
بعد از اجرای کد بالا، خروجی زیر تولید شده و به کاربر نمایش داده میشود.
Elements of Array: 1 0 1 4 9
آرایه ای از کاراکترهای استرینگ
در زبان C میتوانیم کلمات را نیز در آرایهها ذخیره کنیم. زیرا کلمات در واقع توالی از کاراکترها هستند و به شکل آرایهای از کاراکترها ذخیره شدهاند. آخرین عنصر از آرایه مربوط به هر کلمه را مقدار NULL اشغال کرده است. به این آرایهها در زبان C، نوع استرینگ گفته میشود.
نمونهای از ذخیره کلمه در ساختار آرایه و استفاده از آن را در کادر زیر، نمایش دادهایم.
بعد از اجرای کد بالا، خروجی زیر تولید شده و به کاربر نمایش داده میشود.
Faradars
آرایه های چند بُعدی
آرایههای چندبُعدی در زبان C به آرایههایی گفته میشود که از بیش از یک بُعد تشکیل شدهاند. به عنوان چند مورد از مشهورترین آرایههای چندبُعدی میتوان به آرایههای زیر اشاره کرد.
- آرایههای 2D یا دوبُعدی
- و آرایههای 3D یا سهبُعدی
برنامه نویسان حتی میتوانند آرایههایی با ابعاد بیش از ۳ بُعد نیز ایجاد کنند. ولی معمولا توصیه میشود که از استفاده این نوع آرایهها دوری کنیم. زیرا آرایههای با ابعاد بالاتر، پیچیدگی بسیار زیادی ایجاد کرده و علاوه بر آن، فضای زیادی از حافظه را نیز اشغال میکنند.
آرایه های دو بُعدی
آرایه 2D یا دوبُعدی در زبان C به آرایهای گفته میشود که دقیقا از دو بُعد تشکیل شده است. این آرایهها را میتوان به شکل ردیف و ستون، نمایش داد. برای نمایش این آرایهها به صفحههای دو بُعدی نیاز داریم.
سینتکس ابتدایی تعریف آرایههای دوبُعدی را در کادر زیر، نمایش دادهایم.
در سینتکس بالا سه پارامتر مهم وجود دارند. تمام این پارامترها را در فهرست زیر معرفی کردهایم.
- array_name: این پارامتر نشان دهنده نام آرایه است.
- size1: این پارامتر اندازه بُعد اول آرایه را نشان میدهد.
- size2: پارامتر آخر هم اندازه بُعد دوم آرایه را نشان میدهد.
نمونه سادهای از آرایه دوبُعدی را در تصویر زیر، مشاهده میکنید.
![نمونه سادهای از آرایه دو بعدی](https://blog.faradars.org/wp-content/uploads/2024/12/2d-array-6.png)
مثالی درباره آرایه دوبُعدی
در این بخش از مطلب، مثالی را پیادهسازی کردهایم که در آن آرایه دوبُعدی تعریف شده است. سپس این آرایه را پیمایش کرده و در نهایت به روی صفحه نمایش چاپ کردهایم.
بعد از اجرای کد بالا، خروجی زیر تولید شده و به کاربر نمایش داده میشود.
2D Array: 10 20 30 40 50 60
آرایه های سه بُعدی
همینطور که در بالاتر اشاره کرده بودیم، آرایههای سهبُعدی یکی دیگر از آرایههای پُرکاربرد در برنامه نویسی هستند. آرایههای سهبُعدی دقیقا دارای سه بُعد مختلف هستند. برای رسم این آرایهها میتوانیم از مجموعه آرایههای دوبُعدی استفاده کنیم که به صورت پشته بر روی یکدیگر قرار گرفتهاند. به این شکل بُعد سوم ساخته میشود.
سینتکس ساده تعریف آرایههای سهبُعدی را در کادر زیر، نمایش دادهایم.
چهار پارامتر مهم در سینتکس بالا وجود دارند. تمام این پارامترها را در فهرست زیر معرفی کردهایم.
- array_name: این پارامتر نشان دهنده نام آرایه است.
- size1: این پارامتر اندازه بُعد اول آرایه را نشان میدهد.
- size2: این پارامتر هم اندازه بُعد دوم آرایه را نشان میدهد.
- size3: پارامتر آخر هم نشاندهنده اندازه بُعد سوم آرایه است.
در تصویر زیر نمونه سادهای از آرایه سهبُعدی را نمایش دادهایم.
![نمونه کوچک و سادهای از آرایه سهبعدی - آرایه ها در زبان C](https://blog.faradars.org/wp-content/uploads/2024/12/3d-array-7.png)
مثالی درباره آرایه سه بُعدی
در این بخش از مطلب، مثالی را پیادهسازی کردهایم که در آن آرایه سهبُعدی با اندازه ۲×۲×۲ تعریف شده است. سپس این آرایه را پیمایش کرده و در نهایت آن را نمایش دادیم.
بعد از اجرای کد بالا، خروجی زیر تولید شده و به کاربر نمایش داده میشود.
10 20 30 40 50 60 0 0
تصویر بالا آرایه سهبُعدی رسم شده در کدها را نشان میدهد. از آنجا که این آرایه به اندازه ۲×۲×۲ تعریف شده، به شکل دو ماتریس مجزا از هم دوبُعدی نمایش داده شده است. ماتریس بالا لایه اول و ماتریس پایین در واقع لایه دوم از بُعد سوم است.
رابطه بین آرایه ها و اشاره گرها
«آرایهها» (Arrays) و «اشارهگرها» (Pointers) با یکدیگر رابطه بسیار نزدیکی دارند. از نشانگرها میتوان برای انجام تمام عملیات مربوط به آرایهها استفاده کرد. نام آرایه به عنوان نشانگر ثابتی عمل میکند که به اولین عنصر آرایه اشاره دارد. وقتی که آرایهای را برای انجام کار، به تابعی ارسال میکنیم، نام آرایه به صورت خودکار به اشارهگری تبدیل میشود که اولین عنصر آرایه را نشان میدهد.
زبان C شباهت بسیار زیادی به زبان برنامه نویسی ++C دارد. این زبانها با یکدیگر همخانواده هستند. بنابراین بیشتر سینتکس و اصول کدنویسی آنها مشترک است. در نتیجه برای کسب اطلاع بیشتر درباره رابطه آرایهها و اشارهگرها نیز میتوانید مطلب راهنمای جامع آرایه ها و اشاره گرهای ++C را از مجله فرادرس مطالعه کنید.
در برنامه زیر که با زبان C نوشته شده، رابطه بین آرایهها و نشانگرها را نمایش دادهایم.
بعد از اجرای کد بالا، خروجی زیر تولید شده و به کاربر نمایش داده میشود.
Address Stored in Array name: 0x7ffcab67d8e0 Address of 1st Array Element: 0x7ffcab67d8e0 Array elements using pointer: 10 20 30 40 50
روش تعامل توابع و آرایه ها در زبان C
در زبان C هر وقت که آرایهای را به تابع ارسال کنیم، آن آرایه به صورت خودکار به نشانگر تبدیل میشود. این نشانگر همیشه به اولین خانه آرایه اشاره میکند. این مسئله به معنای آن است که تابع در ورودی اشارهگر دریافت میکند و نه آرایه واقعی.
![نموداری پر از المانهای رنگی در مقابل مانیتوری که محیط کدنویسی را نشان میدهد. - آرایه ها در زبان C](https://blog.faradars.org/wp-content/uploads/2024/12/Basic-Array-Structure-in-C-Programming.jpg)
برای روشن شدن این مطلب به کدهای نوشته شده زیر توجه کنید.
بعد از اجرای کد بالا، خروجی زیر تولید شده و به کاربر نمایش داده میشود.
Size of Array in main(): 20 Size of Array in Functions: 8 Array Elements: 10 20 30 40 50
برگشت دادن آرایه از تابع در زبان C
در زبان برنامه نویسی C فقط میتوانیم که مقدار مجزایی را از توابع به بیرون برگردانیم. برای برگرداندن چندین مقدار یا عنصر مختلف ناچار به استفاده از اشارهگرها هستیم. بنابراین با استفاده از اشارهگری که به اولین عنصر آرایه مشخصی اشاره میکند، میتوانیم آن آرایه را از تابع به بیرون برگردانیم.
نمونه انجام این کار را برای برگرداندن آرایه از تابع به بیرون، در کدهای زیر پیادهسازی کردهایم.
بعد از اجرای کد بالا، خروجی زیر تولید شده و به کاربر نمایش داده میشود.
Array Elements: 1 2 3 4 5
توجه: شاید متوجه شدید که آرایه ایستایی را با استفاده از کلمه کلیدی static تعریف کردهایم. این مسئله بخاطر آن است که وقتی هر تابع مقداری را برمیگرداند، تمام متغیرهای محلی و سایر موجودیتهای تعریف شده داخل بلوک تابع، حذف میشوند. بنابراین اگر بهجای تعریف آرایه ایستا از آرایههای محلی استفاده کنیم، بعد از به پایان رسیدن کار تابع، این آرایه هم پاک میشود. در این صورت وقتی که در تابع اصلی main() سعی کنیم به آن آرایه دسترسی داشته باشیم، با خطای Segmentation Fault روبهرو میشویم.
ویژگی آرایه ها در زبان C
بسیار مهم است که با ویژگیهای آرایه در زبان C آشنا شویم. در این صورت میتوانیم از روی دادن بیشتر باگها در زمان استفاده از آرایهها جلوگیری کنیم. مهمترین ویژگیهای آرایه در زبان C را در فهرست زیر نوشتهایم.
- اندازه ثابت: در زبان C، آرایه مجموعهای از عناصر با اندازه ثابت است. در زمان کامپایل، اندازه آرایهها باید از قبل مشخص شده باشد. همچنین بعد از اینکه اندازه آرایه تعریف شد دیگر قابل تغییر نیست.
- «مجموعه همگن» (Homogeneous Collection): فقط میتوانیم نوع خاصی از عناصر را در آرایه ذخیره کنیم. هیچ محدودیتی در تعداد عناصر آرایه وجود ندارد. اما بسیار مهم است که نوع داده همه این عناصر با یکدیگر یکسان باشد.
- اندیسگذاری در آرایه: در زبان برنامه نویسی C، همیشه اندیس آرایهها از «۰» شروع میشود. این مسئله به معنای آن است که در آرایهای با طول «N»، اندیس اولین عنصر برابر با «۰» و اندیس آخرین عنصر هم برابر با «N-۱» است.
- ابعاد آرایه: ابعاد آرایه به تعداد اندیسهایی گفته میشود که برای دسترسی به عنصر خاصی باید آدرسدهی شوند. تعداد ابعاد آرایه، تعداد جهتهایی را نشان میدهد که میتوان آرایه را در آنها گسترش داد.
- «ذخیرهسازی پیوسته» (Contiguous Storage): همه عناصر آرایه به صورت متوالی و پشت سر هم در حافظه ذخیره میشوند. این مسئله یکی از ویژگیهای اصلی تعریف آرایه در زبان C است. در ضمن بخاطر این سبک ذخیرهسازی است که میتوان به عناصر آرایه به صورت تصادفی دسترسی داشت.
- دسترسی تصادفی: آرایه های زبان C امکان دسترسی تصادفی به عناصر خود را فراهم میکنند. به معنای اینکه با «پیچیدگی زمانی ثابت» (Constant Time Complexity) و فقط با استفاده از اندیس عنصر مورد نظر میتوان به صورت تصادفی به آن عنصر دسترسی داشت.
- عدم بررسی خارج از محدوده بودن اندیسها: در زبانهای C و ++C، خارج از محدوده بودن اندیسهای آرایه بررسی نمیشوند. برای مثال، برنامهای که در پایین نوشتهایم، به خوبی کامپایل خواهد شد. اما در زمان اجرا احتمالا خروجیهای غیرمنتظرهای را تولید میکند.
بعد از اجرای کد بالا، خروجی زیر تولید شده و به کاربر نمایش داده میشود.
0 0
در زبان C، مقداردهی آرایهها با عناصر بیشتر از اندازه مشخص شده برای آرایه باعث بروز خطا نمیشود. برای مثال، برنامه زیر به خوبی کامپایل شده و فقط پیغام اخطار نمایش میدهد.
در کد بالا، آرایهای را تعریف کرده و به صورت همزمان مقداردهی نیز کردهایم. اما تعداد عناصر مقداردهی شده بیش از اندازهای است که برای آرایه مشخص کردیم.
![مکعب مربعهای رنگارنگ بر روی صفحات نمادین از مدارهای الکتریکی - آرایه ها در زبان C](https://blog.faradars.org/wp-content/uploads/2024/12/A-Simple-Guide-to-C-Array-Structures.jpg)
بعد از اجرای کد بالا، خروجی زیر تولید شده و به عنوان پیغام اخطار به کاربر نمایش داده میشود.
prog.c: In function 'main': prog.c:7:25: warning: excess elements in array initializer int arr[2] = { 10, 20, 30, 40, 50 }; ^ prog.c:7:25: note: (near initialization for 'arr') prog.c:7:29: warning: excess elements in array initializer int arr[2] = { 10, 20, 30, 40, 50 }; ^ prog.c:7:29: note: (near initialization for 'arr') prog.c:7:33: warning: excess elements in array initializer int arr[2] = { 10, 20, 30, 40, 50 }; ^ prog.c:7:33: note: (near initialization for 'arr')
مثال هایی از آرایه در زبان C
در این قسمت از مطلب، چند مثال مختلف را درباره استفاده از آرایهها در زبان C نمایش دادهایم.
استفاده از داده های ورودی و خروجی برای کار با آرایه
در مثال اول، برنامهای را نوشتهایم که برای کار با آرایه از تابعهای ورودی و خروجی استفاده میکند. در برنامه زیر از توابع scanf() و print() به ترتیب برای گرفتن دادههای ورودی و چاپ دادههای خروجی استفاده کردهایم. با کمک این توابع، دادههای ورودی در آرایه ذخیره شده و دادههای خروجی از آرایه انتخاب میشوند.
بعد از اجرای کد بالا، و با فرض اینکه دادههای 5 7 9 1 4 به ترتیب به عنوان داده ورودی به برنامه ارسال شوند، خروجی زیر تولید شده و به کاربر نمایش داده میشود.
Array Elements: 5 7 9 1 4
چاپ مقدار میانگین عناصر لیست داده شده
در این مسئله لیستی از اعداد داده شده است. باید مقدار میانگین آنها را محاسبه و نتیجه را چاپ کنیم. در کد زیر فرایند حل این مسئله را پیادهسازی کردهایم. ابتدا اعداد دلخواه را در آرایهای ذخیره کرده و سپس برای محاسبه مقدار میانگین این اعداد، تمام عناصر آرایه را به طور کامل پیمایش کردیم.
![تصویری نمایشی از فضای بازیهای کامپیوتری قدیمی](https://blog.faradars.org/wp-content/uploads/2024/12/Learning-Arrays-in-C-with-a-Cheerful-Twist.jpg)
در نهایت هم، مقدار آرایه را در کنار مقدار میانگین بدست آمده نمایش دادیم.
بعد از اجرای کد بالا، و با فرض اینکه دادههای 10 20 30 40 50 به عنوان داده ورودی به آرایه اختصاص داده شدهاند، خروجی زیر تولید شده و به کاربر نمایش داده میشود.
Array Elements: 10 20 30 40 50 Average: 30.00
پیدا کردن بزرگ ترین عدد در آرایه
در این مسئله، آرایهای از اعداد Integer داده شده است. باید بزرگترین عدد را پیدا کرده و در خروجی نمایش دهیم.
در کادر زیر، جواب حل مسئله را با زبان C نوشتهایم. ابتدا برای پیدا کردن بزرگترین عنصر آرایه تابعی را تعریف کردیم که کل آرایه را پیمایش میکند. سپس در بدنه main() از این تابع استفاده کردهایم.
بعد از اجرای کد بالا، خروجی زیر تولید شده و به کاربر نمایش داده میشود.
Largest Number in the Array: 654
آموزش C و C++ با کمک فیلم های آموزشی
++C زبان برنامه نویسی همهمنظوره و عمومی است که هماکنون در سطح وسیعی از علوم کامپیوتر استفاده میشود و مفاهیم شی گرایی، وراثت و پلی مورفیسم را بیان میکند. این زبان و زبان C جزو زبانهای تخصصی برنامه نویسی هستند. سرعت بالا، قدرت زیاد و استحکام این زبانها باعث شده که هنوز برای انجام پروژههای حساس جزو گزینههای اول باشند. فرصتهای شغلی زبانهای C و C++ در حال زیادتر شدناند و برنامه نویسان حرفهای را به خود مشغول میکنند. به همین دلیل فرادرس با هدف پشتیبانی از افراد علاقهمند به زبانهای C و C++، فیلمهای آموزشی زیادی را تولید و منتشر کرده است. در پایین چند مورد از این فیلمها را معرفی میکنیم.
- فیلم آموزش برنامه نویسی رقابتی یا مسابقاتی Competitive Programming – مقدماتی با فرادرس
- فیلم آموزش ساختمان داده درخت بازه ها Segment Tree و پیاده سازی آن در سی پلاس پلاس با فرادرس
- فیلم آموزش مقدماتی ++C، ویژه افراد مبتدی و نوجوانان با فرادرس
- فیلم آموزش برنامه نویسی C دوره جامع و با نکات کاربردی با فرادرس
- فیلم آموزش پروژه محور C++ درباره پیاده سازی بازی شطرنج با فرادرس
در صورت علاقه با کلیک بر روی تصویر زیر، به صفحه اصلی این مجموعه آموزشی رفته از فیلمهای بیشتری نیز دیدن کنید.
![مجموعه آموزش برنامه نویسی C و C++ – مقدماتی تا پیشرفته](https://blog.faradars.org/wp-content/uploads/2024/12/C-and-C-Programming-learning-collection.png)
مزایا و معایب استفاده از آرایه ها در زبان C
بعد از آشنایی و دیدن مثالهای مختلفی درباره استفاده از آرایههای این زبان برای تسلط کافی بر این ساختار داده باید با مزایا و معایب استفاده از آرایه ها در زبان C نیز آشنا شویم. در این حالت است که میدانیم استفاده از آرایه در چه مواقعی به نفع برنامه و در چه مواردی نامناسب است.
در این قسمت از مطلب، ابتدا با مزایای استفاده از آرایهها آشنا شده و سپس به بررسی معایب آنها پرداختهایم.
مزایای استفاده از آرایه در زبان C
آرایهها یکی از ساختارهای داده بسیار مفید و کاربردی در برنامه نویسی با زبان C هستند. مهمترین مزایای آرایهها را در فهرست زیر، بیان کردهایم.
- با استفاده از اندیسهای آرایه میتوان به صورت تصادفی و سریع به عناصر، دسترسی داشت.
- برای ساخت آرایه مجزایی از چندین عنصر مختلف، کدنویسی خیلی کوتاهی استفاده میشود.
- با استفاده از حلقههای معمولی به سادگی میتوانیم بر روی آرایه پیمایش کرده و عناصر آن را ملاقات کنیم.
- فرایند مرتبسازی آرایهها ساده است. زیرا با استفاده از چند خط کد ساده میتوان دستورات مربوط به مرتبسازی را نوشت.
معایب استفاده از آرایه در زبان C
بههرحال در وجود آرایهها هم نقاط ضعفی هست که اطلاع از آنها در بهکارگیری صحیح و بهتر آرایهها میتواند بسیار مثمر ثمر باشد.
- یکی از معایب بزرگ آرایه این است که فقط برای ذخیره تعداد مشخصی عنصر ظرفیت دارد که آنهم در زمان تعریف آرایه، مشخص شده است. بر عکس لیستهای پیوندی، آرایههای زبان C پویا نیستند.
- عملیات حذف و اضافه عناصر به آرایه میتواند پر هزینه باشد. زیرا بعد از هربار اجرای این عملیات، عناصر آرایه باید دوباره مرتب شوند.
جمعبندی
آرایه مجموعهای همگن از عناصر است که اندازه آن در زمان تعریف مشخص شده است. عناصر آرایه به صورت متوالی و پشت سر هم در حافظه کامیپوتر ذخیره میشوند. این ساختمان داده یکی از پراستفادهترین و مهمترین ساختارهایی است که در زبان C برای ذخیرهسازی مقادیر مختلف به کار برده شده. آرایه یکی از مفاهیم هستهای زبان C است. بنابراین تقریبا در بسیاری از برنامههای نوشته شده با این زبان استفاده میشود. برای اینکه بتوانیم به بهترین شکل ممکن از مزایای این ساختار داده و عملکرد آن در برنامههای خود استفاده کنیم، لازم است که درباره روش استفاده و محدودیتهای آن نیز اطلاعات کافی داشته باشیم.
در این مطلب از مجله فرادرس به بررسی آرایه در زبان C پرداختهایم. ابتدا آرایه را تعریف کرده و سپس نکات مهمی را درباره کارکردن با آن بیان کردهایم. برای مثال از موارد مطرح شده در این مطلب میتوان به مقداردهی آرایه، دسترسی به عناصر، بهروزرسانی مقادیر آن، پیمایش بر روی آرایه و غیره اشاره کرد. تسلط بر روی کار با آرایهها در زبان C تاثیر زیادی در افزایش مهارت کدنویسی برای توسعهدهندگان تخصصی این زبان دارد.