الدرس 29: المصفوفات متعددة الأبعاد (المصفوفات ثنائية الأبعاد)
المصفوفات متعددة الأبعاد هي مصفوفات من المصفوفات. الأكثر شيوعاً هي المصفوفة ثنائية الأبعاد، والتي تُستخدم غالباً لتمثيل الجداول، الشبكات، أو المصفوفات الرياضية.
التصريح والتهيئة
تتطلب المصفوفة ثنائية الأبعاد بعدين للحجم: الصفوف و الأعمدة.
القاعدة: data_type array_name[rows][columns];
c // مصفوفة تمثل ماتريكس 3x4 int matrix[3][4];
// تهيئة (مجمعة حسب الصف) int numbers[2][3] = { {1, 2, 3}, // الصف 0 {4, 5, 6} // الصف 1 };
الوصول إلى العناصر
يتم الوصول إلى العناصر باستخدام فهرسين: array_name[row_index][column_index].
c // الوصول إلى العنصر في الصف 1، العمود 0 (وهو القيمة 4) int value = numbers[1][0];
matrix[0][0] = 10; // تعيين 10 للعنصر العلوي الأيسر
التكرار باستخدام الحلقات المتداخلة
يتطلب التكرار عبر مصفوفة ثنائية الأبعاد دائماً حلقات متداخلة (واحدة للصفوف، وأخرى للأعمدة).
c #define ROWS 2 #define COLS 3
int main() { int grid[ROWS][COLS] = {{1, 2, 3}, {4, 5, 6}};
for (int i = 0; i < ROWS; i++) { // الحلقة الخارجية: الصفوف
for (int j = 0; j < COLS; j++) { // الحلقة الداخلية: الأعمدة
printf("%d\t", grid[i][j]);
}
printf("\n");
}
return 0;
}
تخطيط الذاكرة: على الرغم من أننا نتخيل المصفوفات ثنائية الأبعاد كجداول، إلا أنها تُخزن بشكل متسلسل في الذاكرة، صفاً تلو الآخر (ترتيب الصفوف أولاً).