الدرس 19: حساب المؤشرات والمصفوفات
يمكنك إجراء عمليات حسابية على المؤشرات — لكنه حساب ذكي: p + 1 لا يتقدم بمقدار بايت واحد، بل يتقدم بمقدار عنصر كامل واحد، أي بمقدار sizeof(type) بايت. هنا يُكشف السر الكبير للمصفوفات: اسم المصفوفة 'يتحلل' (decays) إلى عنوان عنصرها الأول — arr هو تمامًا &arr[0]. ومن هذا تنبع المطابقة الشهيرة: *(arr +
المصفوفة هي صف من الصناديق المتلاصقة في الشارع. اسم المصفوفة هو عنوان الصندوق الأول، و p + 1 يعني 'اقفز إلى الصندوق التالي' — مهما بلغ عرض كل صندوق بالسنتيمترات، تكون القفزة دائمًا بمقدار صندوق كامل واحد بالضبط.
- حساب المؤشرات
- الجمع والطرح على المؤشرات. p + 1 يتقدم إلى العنصر التالي، لا إلى البايت التالي.
- خطوة العنصر
- p + 1 يضيف sizeof(type) بايت إلى العنوان — بالنسبة إلى int (4 بايت): من 1000 إلى 1004.
- تحلل المصفوفة
- في معظم التعبيرات، يصبح اسم المصفوفة عنوان عنصرها الأول: arr == &arr[0].
- المطابقة arr[i] == *(arr + i)
- الفهرسة اختصار للحساب: اقفز i من العناصر من البداية وصِل إلى القيمة.
- التنقّل بالمؤشر
- حلقة تُقدّم مؤشرًا عبر المصفوفة: while (p < arr + n) { ...; p++; }.