Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

المؤشرات والمصفوفات

جزء من قسم Logic & Flow في رحلة C++ على Coddy — الدرس 5 من 56.

تمتلك المصفوفات والمؤشرات علاقة خاصة في لغة ++C. فعندما تقوم بالتصريح عن مصفوفة، يعمل اسم المصفوفة في الواقع كمؤشر للعنصر الأول في تلك المصفوفة. يتيح لك هذا الارتباط استخدام المؤشرات للتعامل مع المصفوفات بطرق قوية.

تأمل تعريف المصفوفة التالي:

int numbers[5] = {10, 20, 30, 40, 50};
int* ptr = numbers;  // يشير ptr الآن إلى numbers[0]

هنا، numbers يعادل &numbers[0] - كلاهما يعطيك عنوان العنصر الأول. المؤشر ptr يشير الآن إلى نفس الموقع.

بمجرد حصولك على مؤشر لمصفوفة، يمكنك استخدام حساب المؤشرات للتنقل عبر العناصر. إضافة 1 إلى المؤشر ينقله إلى العنصر التالي من نفس النوع:

ptr++;        // يشير الآن إلى numbers[1]
ptr = ptr + 2; // يشير الآن إلى numbers[3]

يمكنك إلغاء مرجعية المؤشر (dereference) عند أي موضع للوصول إلى القيمة: *ptr تعطيك القيمة عند الموضع الحالي، و *(ptr + 1) تعطيك قيمة العنصر التالي.

تمكنك هذه العلاقة بين المؤشر والمصفوفة من التكرار عبر المصفوفات باستخدام المؤشرات بدلاً من الحلقات التقليدية القائمة على الفهرس، مما يوفر نهجاً بديلاً للتنقل عبر المصفوفة.

challenge icon

التحدي

سهل

قم بإنشاء برنامج يستخدم مؤشراً (pointer) للتنقل عبر مصفوفة وطباعة كل عنصر، مما يوضح العلاقة بين المؤشرات والمصفوفات.

لقد تم تزويدك بالمصفوفة التالية:

int values[6] = {15, 23, 8, 42, 17, 31};

يجب أن يقوم برنامجك بما يلي:

  1. إنشاء مؤشر باسم ptr يشير إلى العنصر الأول في مصفوفة values
  2. استخدام حسابات المؤشرات (pointer arithmetic) للتنقل عبر جميع عناصر المصفوفة الستة
  3. طباعة كل عنصر عن طريق إلغاء مرجع المؤشر (dereferencing) في كل موضع
  4. نقل المؤشر إلى العنصر التالي باستخدام حسابات المؤشرات (زيادة المؤشر)

اطبع كل عنصر في سطر منفصل بالتنسيق التالي:

Element: [value]

يجب أن يظهر المخرج جميع العناصر الستة بالترتيب الذي تظهر به في المصفوفة، مع الوصول إليها من خلال إلغاء مرجع المؤشر بدلاً من استخدام فهرس المصفوفة (array indexing).

ورقة مرجعية

تعمل أسماء المصفوفات كمؤشرات للعنصر الأول. يمكنك تعيين اسم المصفوفة مباشرة إلى مؤشر:

int numbers[5] = {10, 20, 30, 40, 50};
int* ptr = numbers;  // ptr يشير إلى numbers[0]

استخدم حسابيات المؤشرات للتنقل عبر عناصر المصفوفة:

ptr++;        // الانتقال إلى العنصر التالي
ptr = ptr + 2; // التحرك للأمام بمقدار عنصرين

قم بإلغاء مرجعية المؤشر للوصول إلى القيم:

*ptr          // قيمة العنصر الحالي
*(ptr + 1)    // قيمة العنصر التالي

يتيح ذلك التنقل في المصفوفة بناءً على المؤشرات كبديل للحلقات القائمة على الفهرس.

جرّب بنفسك

#include <iostream>
using namespace std;

int main() {
    // المصفوفة المعطاة
    int values[6] = {15, 23, 8, 42, 17, 31};
    
    // مهمة: قم بإنشاء مؤشر باسم 'ptr' يشير إلى العنصر الأول في المصفوفة
    
    // مهمة: استخدم حلقة تكرارية للمرور عبر جميع العناصر الستة باستخدام حسابات المؤشرات
    // مهمة: اطبع كل عنصر عن طريق إلغاء مرجع المؤشر (dereferencing)
    // مهمة: حرك المؤشر إلى العنصر التالي باستخدام حسابات المؤشرات
    
    return 0;
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow