آرایه در برنامه نویسی C
در این آموزش کار با آرایه ها مانند تعریف آرایه، مقداردهی اولیه و دسترسی به عناصر آرایه را به کمک مثال یاد خواهید گرفت.
آرایه متغیری است که می تواند بیش از یک مقدار در خود ذخیره کند. به عنوان مثال برای ذخیره ۱۰۰ عدد صحیح می توانید یک آرایه تعریف کنید.
int data[100];
تعریف آرایه
نوع داده نام آرایه [اندازه آرایه];
مثال،
float mark[5];
در اینجا یک آرایه با نام mark از نوع اعشاری با اندازه ۵ تعریف شده است. یعنی می توان ۵ عدد اعشاری در آن ذخیره کرد.
این نکته مهم است که اندازه و نوع آرایه پس از تعریف آن قابل تغییر نیست.
دسترسی به عناصر آرایه
با استفاده از اندیس (شاخص) می توانید به عناصر آرایه دسترسی پیدا کنید.
در آرایه mark تعریف شده در مثال بالا، عنصر اول [mark[0، عنصر دوم [mark[1 و به همین ترتیب می باشد.
چند نکته کلیدی:
- اولین اندیس در آرایه ۰ است نه ۱٫ در این مثال، mark[0] عنصر اول است.
- اگر اندازه آرایه n باشد، برای دسترسی به آخرین عنصر از اندیس n-1 استفاده می شود. در این مثال mark[4] است.
- فرض کنید آدرس شروع آرایه در حافظه یعنی mark[0] برابر با ۲۱۲۰d باشد. پس آدرس mark[1] و mark[2] به ترتیب برابر ۲۱۲۴d و ۲۱۲۸d خواهد بود و بقیه نیز به همین ترتیب ادامه می یابد. به دلیل اینکه اندازه نوع عدد اعشاری ۴ بایت است.
مقداردهی آرایه
می توانید آرایه را در زمان تعریف آن مقداردهی اولیه کنید. مثال،
int mark[5] = {19, 10, 8, 17, 9};
به صورت زیر نیز می توانید برای یک آرایه مقداردهی اولیه انجام دهید.
int mark[] = {19, 10, 8, 17, 9};
در اینجا اندازه مشخص نشده است اما کامپایلر براساس تعداد عناصر مقداردهی شده، اندازه آن را ۵ در نظر می گیرد.
اینجا،
mark[0] برابر با ۱۹ است.
mark[1] برابر با ۱۰ است.
mark[2] برابر با ۸ است.
mark[3] برابر با ۱۷ است.
mark[4] برابر با ۹ است.
تغییر مقدار عناصر آرایه
int mark[5] = {19, 10, 8, 17, 9}
// مقدار عنصر سوم را به ۱- تغییر می دهد
mark[2] = -1;
// مقدار عنصر پنجم ۰ می شود
mark[4] = 0;
ورودی و خروجی به آرایه
شیوه گرفتن ورودی از کاربر و ذخیره آن در یک عنصر از آرایه به صورت زیر است:
// گرفتن ورودی از کاربر و ذخیره آن در عنصر سوم آرایه
scanf(“%d”, &mark[2]);
// ام آرایهi گرفتن ورودی از کاربر و ذخیره آن در عنصر
scanf(“%d”, &mark[i-1]);
چاپ یک عنصر از آرایه:
// چاپ اولین عنصر آرایه
printf(“%d”, mark[0]);
// چاپ سومین عنصر آرایه
printf(“%d”, mark[2]);
// ام آرایهi چاپ عنصر
printf(“%d”, mark[i-1]);
مثال ۱: ورودی/ خروجی آرایه
// ۵ مقدار از ورودی می گیرد و آنها را در یک آرایه ذخیره می کند
// چاپ عناصر ذخیره شده در آرایه
#include <stdio.h>
int main() {
int values[5];
printf(“Enter 5 integers: “);
// گرفتن ورودی و ذخیره در آرایه
for(int i = 0; i < 5; ++i) {
scanf(“%d”, &values[i]);
}
printf(“Displaying integers: “);
// چاپ عناصر آرایه
for(int i = 0; i < 5; ++i) {
printf(“%dn”, values[i]);
}
return 0;
}
خروجی
Enter 5 integers: 1
-۳
۳۴
۰
۳
Displaying integers: 1
-۳
۳۴
۰
۳
در اینجا با استفاده از حلقه for، ۵ ورودی از کاربر گرفته و در آرایه values ذخیره شده سپس با استفاده از یک حلقه for دیگر عناصر روی صفحه نمایش داده می شوند.
مثال ۲: محاسبه میانگین
//عدد با استفاده از آرایه n محاسبه میانگین
#include <stdio.h>
int main()
{
int marks[10], i, n, sum = 0, average;
printf(“Enter number of elements: “);
scanf(“%d”, &n);
for(i=0; i<n; ++i)
{
printf(“Enter number%d: “,i+1);
scanf(“%d”, &marks[i]);
// sum جمع عدد وارد شده توسط کاربر با متغیر
sum += marks[i];
}
average = sum/n;
printf(“Average = %d”, average);
return 0;
}
خروجی
Enter n: 5
Enter number1: 45
Enter number2: 35
Enter number3: 38
Enter number4: 31
Enter number5: 49
Average = 39
در اینجا، میانگین n عدد وارد شده توسط کاربر محاسبه شده است.
دسترسی عناصر خارج از محدوده ارایه
فرض کنید یک آرایه با ۱۰ عنصر تعریف کرده اید. بیایید بگوییم ،
int testArray[10];
می توانید به عناصر آرایه با استفاده از [testArray[0 تا [testArray[9 دسترسی پیدا کنید.
حالا اگر سعی کنید به خانه testArray[12] دسترسی پیدا کنید، باید بگوییم که این عنصر قابل دسترس نیست و ممکنه منجر به خروجی غیرمنتظره ای (رفتار تعریف نشده) شود. گاهی اوقات نیز خطا رخ می دهد و در بعضی موارد هم ممکنه برنامه به درستی اجرا شود. به همین دلیل هرگز نباید سعی کنید به عناصر خارج از محدوده آرایه دسترسی داشته باشید.
آرایه های چند بعدی
در این آموزش با مفاهیم اولیه آرایه ها آشنا شدید. به این آرایه ها، آرایه های یک بعدی گفته می شود. در آموزش بعدی آرایه های چند بعدی (آرایه ای از یک آرایه) را بررسی خواهیم کرد.
سلام چطور میشه مثلا دو آرایه a وb رو به صورت زیر در آرایه cذخیره کرد؟
پاسخUnsigned char a[]=x
Unsigned char b[]=y
Unsigned char c[]=x,y
c
// تعریف دو آرایه
unsigned char a[] = {1, 2, 3};
unsigned char b[] = {4, 5, 6};
// تعریف آرایه جدید
unsigned char c[6];
// ترکیب دو آرایه
for (int i = 0; i < sizeof(a); i++) {
c[i] = a[i];
}
for (int i = 0; i < sizeof(b); i++) {
c[i + sizeof(a)] = b[i];
}