Latest web development tutorials

قواعد نطاق C

أي نوع من البرمجة، يتم تعريف النطاق في منطقة متغيرة البرنامج الموجودة خارج منطقة متغيرة لا يمكن الوصول إليها. لغة C، وهناك ثلاثة الأماكن التي يمكن أن تعلن المتغيرات:

  1. في المتغيراتالمحلية داخل كتلة أو
  2. كل المتغيراتالعالمية خارج الدالة
  3. وظيفة المعلمات تحددشكل المعلمة

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

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

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

#include <stdio.h>
 
int main ()
{
  /* 局部变量声明 */
  int a, b;
  int c;
 
  /* 实际初始化 */
  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>
 
/* 全局变量声明 */
int g;
 
int main ()
{
  /* 局部变量声明 */
  int a, b;
 
  /* 实际初始化 */
  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>
 
/* 全局变量声明 */
int g = 20;
 
int main ()
{
  /* 局部变量声明 */
  int g = 10;
 
  printf ("value of g = %d\n",  g);
 
  return 0;
}

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

value of g = 10

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

معلمات الدالة، يتم التعامل مع المعلمات رسمية كما المتغيرات المحلية داخل وظيفة، وسوف تعطي الأولوية لتجاوز المتغير العالمي. هنا مثال على ذلك:

#include <stdio.h>
 
/* 全局变量声明 */
int a = 20;
 
int main ()
{
  /* 在主函数中的局部变量声明 */
  int a = 10;
  int b = 20;
  int c = 0;
  int sum(int, int);

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

  return 0;
}

/* 添加两个整数的函数 */
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

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

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

数据类型初始化默认值
int 0
char '\0'
float 0
double 0
pointer NULL

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