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

قواعد النطاق: المتغيرات المحلية والعالمية

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

الدرس 24: قواعد النطاق: المتغيرات المحلية والعالمية

يحدد النطاق (Scope) منطقة البرنامج التي يمكن فيها الوصول إلى معرف تم التصريح عنه (متغير، دالة، إلخ).

1. النطاق المحلي (المتغيرات التلقائية)

  • المتغيرات التي يتم التصريح عنها داخل دالة، أو كتلة ({})، أو كمعلمات للدالة.
  • نطاقها يقتصر على تلك الكتلة.
  • يتم إنشاؤها عند دخول الكتلة وتدميرها عند الخروج منها.

c void example_func() { int x = 10; // محلي لـ example_func if (x > 5) { int y = 20; // محلي لكتلة if printf("y هي %d\n", y); } // يتم تدمير y هنا // printf("y هي %d\n", y); // خطأ: y خارج النطاق }

2. النطاق العالمي (المتغيرات الخارجية)

  • المتغيرات التي يتم التصريح عنها خارج أي دالة.
  • يمتد نطاقها من نقطة التصريح حتى نهاية الملف.
  • يمكن الوصول إليها وتعديلها بواسطة أي دالة في البرنامج (وربما ملفات أخرى).

c int GLOBAL_COUNTER = 0; // متغير عالمي

void increment() { GLOBAL_COUNTER++; // يمكن الوصول إليه هنا }

int main() { increment(); printf("العداد: %d\n", GLOBAL_COUNTER); // يمكن الوصول إليه هنا return 0; }

فئات التخزين (ذكر موجز)

تتحكم محددات فئة التخزين مثل auto و extern و static و register في النطاق والعمر والربط للمتغيرات. سنركز على static لاحقاً، والتي تسمح للمتغير بالاحتفاظ بقيمته بين استدعاءات الدوال، حتى لو تم تعريفه محلياً.