العودة إلى الدورة

مؤشر إلى مؤشر (المؤشرات المزدوجة)

لغة C: من الصفر إلى الاحتراف - الدليل الشامل للمبتدئين

الدرس 40: مؤشر إلى مؤشر (المؤشرات المزدوجة)

المؤشر المزدوج (أو المؤشر إلى مؤشر) هو متغير يخزن عنوان متغير مؤشر آخر.

التصريح

يستخدم المؤشر المزدوج علامتي نجمة (**).

c int x = 10; int *p = &x; // p يخزن عنوان x int **pp = &p; // pp يخزن عنوان p

فك مرجع المؤشرات المزدوجة

  1. pp: يحمل عنوان p.
  2. *pp: يفك المرجع مرة واحدة، والنتيجة هي محتوى p (وهو عنوان x).
  3. **pp: يفك المرجع مرتين، والنتيجة هي محتوى x (وهي القيمة 10).

c printf("قيمة x عبر **pp هي: %d\n", **pp); // 10

// يمكننا تغيير x باستخدام المؤشر المزدوج **pp = 20; printf("القيمة الجديدة لـ x هي: %d\n", x); // 20

تطبيقات المؤشرات المزدوجة

1. تمرير مؤشر بالمرجع

يسمح هذا للدالة بتغيير العنوان الفعلي الذي يحمله متغير المؤشر في الدالة المستدعية (مثل تهيئة مؤشر لهيكل أو إجراء تغيير حجم لمصفوفة ديناميكية).

2. تنفيذ مصفوفات ديناميكية ثنائية الأبعاد

يتطلب إنشاء ماتريكس ثنائية الأبعاد ديناميكياً تخصيص مصفوفة من المؤشرات، حيث يشير كل مؤشر إلى صف مخصص ديناميكياً (مصفوفة من البيانات).

c // تخصيص لـ 10 صفوف (مؤشرات)، كل منها يشير إلى 20 عموداً (أعداد صحيحة) int **dynamic_matrix = (int **) malloc(10 * sizeof(int *)); for (int i = 0; i < 10; i++) { dynamic_matrix[i] = (int *) malloc(20 * sizeof(int)); }