المصفوفة عبارة عن مجموعة من العناصر من نفس نوع البيانات(integer, string,…etc)
#include<stdio.h>
int main() {
int a[5];
a[0] = 1;
a[1] = 2;
a[2] = 3;
a[3] = 4;
a[4] = 5;
printf("%d", a[3]); // 4
return 0;
}
أو اعطاؤها القيم اثناء مرحلة الانشاء:
#include<stdio.h>
int main() {
int a[5] = {1, 2, 3, 4, 5};
printf("%d", a[2]); // 3
return 0;
}
اذا قمنا بعمل مصفوفة حجمها 10 عناصر وقمنا باعطاء قيم فقط ل 7 عناصر, باقي القيم سيتم اعطاؤهم قيمة 0 بشكل تلقائي
#include<stdio.h>
int main() {
int a[10] = {1, 2, 3, 4, 5, 6,7};
printf("%d\n", a[8]); // 0
printf("%d", a[6]); //7
return 0;
}
يمكننا الوصول الى جميع عناصر المصفوفة باستخدام for loop
#include<stdio.h>
int main() {
int a[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
printf("a[%d] = %d\n", i, a[i]);
}
return 0;
}
يمكنك انشاء المصفوفة دون تحديد الحجم داخل الاقواس, ال compiler سيقوم بشكل تلقائي بعد عدد العناصر, هذه الطريقة افضل و أكثر أمان اذا بدك تعمل قيم لجميع المصفوفة أو ما بدك تعد العناصر بشكل غير تلقائي
#include<stdio.h>
int main() {
int a[] = {1, 2, 3,4 ,5 ,6,7, 8, 9, 10};
for (int i = 0; i < sizeof(a)/ sizeof(a[0]); i++) {
printf("a[%d] = %d\n", i, a[i]);
}
return 0;
}
لاحظ قمنا باستخدام sizeof لمعرفة عدد مرات تكرار ال loop
sizeof(a): عبارة عن حجم المصوفة(عدد العناصر) وهي 10 عناص ضرب الحجم الذي يشغلة كل عنصر حسب نوع البانات, هنا لدينا integer
10 * 4 = 40
sizeof(a[0]): عبارة عن حجم العنصر الاول, وقد يختلف حسب نوع البيانات, هنا نوع البانات لدينا integer ويحجز 4byte
عدد التكرارات = 40/4 = 10 تكرارات 0–>9
ويمكننا اعطاء قيم للمصوفة عن طريق user-input
#include<stdio.h>
int main() {
int n;
printf("enter the szie of the array: ");
scanf("%d", &n);
int a[n];
for (int i = 0; i < n; i++) {
printf("a[%d] = ", i);
scanf("%d", &a[i]);
}
printf("=============================\n");
for(int i = 0; i < sizeof(a) / sizeof(a[0]); i++) {
printf("a[%d] = %d\n", i, a[i]);
}
return 0;
}