موصى به, 2021

اختيار المحرر

الفرق بين المتغير المحلي والمتغير العالمي

كما ناقشنا في وقت سابق ، المتغير هو اسم ، نظرا لموقع الذاكرة ويجب أن يعلن قبل استخدامه. في C ، يتم تعريف كافة المتغيرات في بداية البرنامج. في C ++ ، يمكن الإعلان عن المتغيرات ، في أي وقت ، قبل استخدامها في التعليمات.

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

دعونا دراسة بعض الاختلافات بين متغير محلي وعالمي جنبا إلى جنب مع مخطط المقارنة.

رسم بياني للمقارنة:

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

تعريف المتغير المحلي

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

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

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

ملحوظة:
ومع ذلك ، هناك طريقة للاحتفاظ بقيمة متغير محلي ، باستخدام معدل "ثابت".

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

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

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

يكون المتغير العام مفيدًا في الحالات التي يتم فيها الوصول إلى وظائف متعددة لنفس البيانات. قد يكون استخدام عدد كبير من المتغيرات العالمية مشكلة ، حيث قد تكون هناك تغييرات غير مرغوب فيها في قيمة المتغير الشامل.

الفرق الرئيسي بين المتغير المحلي والعالمي.

  1. تسمى المتغيرات المحلية "محلية" لأنها تعرف فقط بالعبارات المكتوبة في وظيفة تم الإعلان عنها وغير معلنة لأي وظيفة أخرى موجودة خارج كتلة الوظائف هذه. في حالة المتغير الشامل ، تكون معروفة لكل وظيفة موجودة في البرنامج ؛ وبالتالي ، يطلق عليهم "عالمي".
  2. تحتفظ المتغيرات العالمية بقيمتها حتى يكون البرنامج في مرحلة التنفيذ ، حيث يتم تخزينها في موقع ثابت يقرره المترجم. يتم تخزين المتغيرات المحلية على المكدس؛ وبالتالي ، فإنها لا تحتفظ بقيمتها حيث أن 'stack' ديناميكية بطبيعتها ، ولكن يمكن توجيه المحول إلى الاحتفاظ بقيمته ، باستخدام المعدل 'الثابت'.
  3. إذا تم التصريح عن متغير محلي وعالمي بنفس الاسم ، فستشير جميع عبارات كتلة الشفرة التي أعلن فيها المتغير المحلي فقط إلى متغير محلي ولن تتسبب في أي تأثير لمتغير شامل.
  4. يتم إتلاف متغير محلي عندما يخرج التحكم في البرنامج خارج الكتلة التي يتم فيها تعريف المتغير المحلي. ومع ذلك ، يتم إتلاف متغير عمومي عند إنهاء البرنامج بالكامل.

استنتاج:

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

Top