تعریف آرایهها
در زبان C، آرایهها به شکل متغیرهای معمولی تعریف میشوند با این تفاوت که نام آرایه باید با مشخصه اندازه همراه باشد.
آرایه یکبعدی
آرایه یک بعدی به صورت زیر تعریف میشود.
type array-name [array-size] ;
که در آن array-name نام آرایه است که از قانون نامگذاری متغیرها پیروی میکند، array-size بزرگی و یا تعداد عناصر آرایه است و type نیز نوع عناصر آن را مشخص میکند. برای مثال اگر آرایه a دارای ۷ عنصر از نوع int باشد، بهاین صورت معرفی میشود.
int a[7] ;
و خانههای اختصاص داده شده به آن به صورت متوالی و به شکل زیر خواهد
همان طور که میبینید شماره خانهها از صفر تا شش است. به عبارت دیگر حد پایین آن برابر صفر و حد بالای آن یک واحد از طول یا بزرگی آرایه کمتر خواهد بود که در مثال مزبور، حد بالای آن برابر ۶ است.
روش برنامهنویسی خوب آن است که اندازه آرایه به صورت ثابت سمبولیک تعریف شود. از آنجا که با تغییر مقدار ثابت سمبولیک اندازه آرایه به راحتی تغییر میکند، این عمل تغییر برنامهای را که از آرایه سود میبرد سادهتر میسازد.
مثال به دستورهای زیر توجه کنید.
#define size 50
int A[size] ;
در اینجا طول آرایه به صورت غیرمستقیم و با استفاده از دستور define مشخص شده است. کلاس حافظه ممکن است خودکار، ایستا، یا خارجی باشد، اما نمیتواند ثبات تعریف شود. بنابراین در حالت کلی میتوان آرایهای یکبعدی را به صورت زیر تعریف کرد.
storage-class data-type array-name [expression] ;
که در آن expression ممکن است عدد صحیح یا متغیر از نوع int و یا عبارت ساده محاسباتی باشد که از ترکیب مقادیر عددی صحیح و متغیرهایی از نوع int با استفاده از عملگرهای محاسباتی مانند + و – تشکیل شده است. نتیجه این عبارت یک عدد صحیح خواهد بود که معرف بزرگی آرایه است. متعارف آن است که بزرگی آرایه به صورت عدد صحیح و یا متغیری از نوع عدد صحیح تعیین گردد. واضح است که اگر بزرگی آرایه به صورت متغیر از نوع int بیان گردد، باید مقدار آن هنگام تعریف عناصر آن تشخیص داده شود. برای آرایههایی که درون یک تابع یا بلوک تعریف میگردند سطح ذخیرهسازی خودکار و برای آرایههایی که بیرون از تابع تعریف میگردند سطح ذخیرهسازی خارجی پیش فرض خواهد بود.
مثال به نمونههایی از تعریف چند آرایه یک بعدی توجه کنید.
int A[5] ;
float B[25] ;
static float C[15] ;
double x1[10] ;
char str[80] ;
در این اعلان آرایه A از نوع int با ۵ عنصر و آرایه B از نوع float با ۲۵ عنصر و آرایه C از نوع float با ۱۵ عنصر و از لحاظ کلاس حافظه نیز ایستا تعریف شده است. همچنین آرایه x1 از نوع double و آرایه str از نوع char با ۸۰ عنصر تعریف شده است. (آرایههای کاراکتری معمولاً برای نمایش رشتهها به کار می روند.)