القائمة الرئيسية

الصفحات

C - Scope Rules / قواعد النطاق

 

النطاق في أي برمجة هو منطقة من البرنامج حيث يمكن أن يكون للمتغير المحدد وجوده وما وراء ذلك المتغير لا يمكن الوصول إليه. هناك ثلاثة أماكن حيث يمكن التصريح عن المتغيرات بلغة البرمجة C -

  • داخل دالة أو كتلة تسمى المتغيرات المحلية .

  • خارج جميع الوظائف وهو ما يسمى المتغيرات العالمية .

  • في تعريف معلمات الوظيفة التي تسمى المعلمات الرسمية .

دعونا نفهم ما هي المحلية و العالمية المتغيرات، و رسمية المعلمات.

المتغيرات المحلية

المتغيرات المعلنة داخل دالة أو كتلة تسمى المتغيرات المحلية. يمكن استخدامها فقط من خلال العبارات الموجودة داخل تلك الوظيفة أو كتلة التعليمات البرمجية. المتغيرات المحلية غير معروفة لوظائف خارج نطاقها. يوضح المثال التالي كيفية استخدام المتغيرات المحلية. هنا جميع المتغيرات a و b و c محلية إلى دالة main ().


#include <stdio.h>
 
int main () {

  /* local variable declaration */
  int a, b;
  int c;
 
  /* actual initialization */
  a = 10;
  b = 20;
  c = a + b;
 
  printf ("value of a = %d, b = %d and c = %d\n", a, b, c);
 
  return 0;
}

المتغيرات العالمية

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

يمكن الوصول إلى المتغير الشامل بواسطة أي دالة. بمعنى أن المتغير الشامل متاح للاستخدام في جميع أنحاء البرنامج بالكامل بعد إعلانه. يوضح البرنامج التالي كيفية استخدام المتغيرات العالمية في البرنامج.


#include <stdio.h>
 
/* global variable declaration */
int g;
 
int main () {

  /* local variable declaration */
  int a, b;
 
  /* actual initialization */
  a = 10;
  b = 20;
  g = a + b;
 
  printf ("value of a = %d, b = %d and g = %d\n", a, b, g);
 
  return 0;
}

يمكن أن يكون لبرنامج ما نفس الاسم للمتغيرات المحلية والعالمية ولكن قيمة المتغير المحلي داخل دالة ستكون الأفضلية. هنا مثال -


#include <stdio.h>
 
/* global variable declaration */
int g = 20;
 
int main () {

  /* local variable declaration */
  int g = 10;
 
  printf ("value of g = %d\n",  g);
 
  return 0;
}

عندما يتم تجميع التعليمات البرمجية أعلاه وتنفيذها ، فإنها تنتج النتيجة التالية -

value of g = 10

المعلمات الرسمية

يتم التعامل مع المعلمات الرسمية كمتغيرات محلية مع دالة داخل دالة ولها الأسبقية على المتغيرات العامة. فيما يلي مثال -


#include <stdio.h>
 
/* global variable declaration */
int a = 20;
 
int main () {

  /* local variable declaration in main function */
  int a = 10;
  int b = 20;
  int c = 0;

  printf ("value of a in main() = %d\n",  a);
  c = sum( a, b);
  printf ("value of c in main() = %d\n",  c);

  return 0;
}

/* function to add two integers */
int sum(int a, int b) {

   printf ("value of a in sum() = %d\n",  a);
   printf ("value of b in sum() = %d\n",  b);

   return a + b;
}

عندما يتم تجميع التعليمات البرمجية أعلاه وتنفيذها ، فإنها تنتج النتيجة التالية -

value of a in main() = 10
value of a in sum() = 10
value of b in sum() = 20
value of c in main() = 30

تهيئة المتغيرات المحلية والعالمية

عندما يتم تحديد متغير محلي ، لا يتم تهيئته من قبل النظام ، يجب عليك تهيئته بنفسك. يتم تهيئة المتغيرات العامة تلقائيًا بواسطة النظام عندما تحددها على النحو التالي -

نوع البياناتالقيمة المبدئية الافتراضية
int0
شار'0'
تطفو0
مزدوج0
المؤشرلا شيء

من الممارسات البرمجية الجيدة تهيئة المتغيرات بشكل صحيح ، وإلا فقد ينتج عن برنامجك نتائج غير متوقعة ، لأن المتغيرات غير المهيأة ستأخذ بعض القيمة المهملة المتوفرة بالفعل في موقع ذاكرتها.


الصفحة التالية                                                                                  الصفحة السابقة      

هل اعجبك الموضوع :

تعليقات