الدرس 35: المؤشرات الجزء 2: المؤشرات والمصفوفات
في لغة C، توجد علاقة وثيقة وحاسمة بين المؤشرات والمصفوفات. غالباً ما يتم معاملتهما بشكل متبادل في التعبيرات.
اسم المصفوفة كمؤشر
عند استخدامه في تعبير (باستثناء استخدامه مع sizeof أو &) ، يتحول اسم المصفوفة إلى مؤشر ثابت لعنصرها الأول.
بفرض وجود: c int arr[5] = {10, 20, 30, 40, 50};
arrيكافئ&arr[0](عنوان العنصر الأول).
الوصول إلى عناصر المصفوفة باستخدام المؤشرات
يمكننا استخدام حساب المؤشرات (سيتم شرحه لاحقاً) أو فهرسة المصفوفة على المؤشر.
c int *ptr = arr; // ptr الآن يحمل عنوان arr[0]
// فهرسة المصفوفة عبر اسم المصفوفة: printf("%d\n", arr[2]); // 30
// فهرسة المصفوفة عبر المؤشر: printf("%d\n", ptr[2]); // 30
// فك المرجع مع حساب المؤشرات: printf("%d\n", *(arr + 2)); // 30 printf("%d\n", *(ptr + 2)); // 30
المؤشرات والسلاسل النصية
يتم التلاعب بالسلاسل النصية عادةً باستخدام المؤشرات لأن السلسلة النصية المباشرة ("Hello") هي في الأصل مؤشر للحرف الأول من ذلك النص.
c char *s = "C Programming"; // s يشير للحرف 'C' printf("%s\n", s); // يطبع السلسلة بالكامل حتى \0 printf("%c\n", *s); // يطبع 'C' printf("%c\n", *(s + 2)); // يطبع ' ' (مسافة)
قاعدة أساسية: فهم أن arr[i] هو مجرد اختصار لـ *(arr + i) أمر ضروري لإتقان لغة C.