Static هي كلمة أساسية مستخدمة في لغة البرمجة C. يمكن استخدامه مع كل من المتغيرات والدالات، أي يمكننا الإعلان عن متغير ثابت ودالة ثابتة أيضًا. يقتصر المتغير العادي على النطاق الذي تم تعريفه فيه، في حين أن نطاق المتغير الثابت يكون في جميع أنحاء البرنامج.
يمكن استخدام الكلمة الأساسية الثابتة في المواقف التالية:
عندما يتم الإعلان عن متغير عام باستخدام كلمة أساسية ثابتة، فإنه يُعرف باسم متغير عام ثابت. يتم الإعلان عنه في أعلى البرنامج، ويكون ظهوره في جميع أنحاء البرنامج.
عندما يتم الإعلان عن وظيفة باستخدام كلمة أساسية ثابتة تُعرف باسم وظيفة ثابتة. عمره هو في جميع أنحاء البرنامج.
عندما يتم الإعلان عن متغير محلي باستخدام كلمة أساسية ثابتة، فإنه يُعرف باسم المتغير المحلي الثابت. تكون ذاكرة المتغير المحلي الثابت صالحة في جميع أنحاء البرنامج، ولكن نطاق رؤية المتغير هو نفس نطاق المتغيرات المحلية التلقائية. ومع ذلك، عندما تقوم الدالة بتعديل المتغير المحلي الثابت أثناء استدعاء الدالة الأول، فستكون هذه القيمة المعدلة متاحة لاستدعاء الدالة التالي أيضًا.
عندما يتم الإعلان عن متغيرات الأعضاء باستخدام كلمة أساسية ثابتة في الفصل، فإنها تُعرف باسم متغيرات الأعضاء الثابتة. يمكن الوصول إليها من خلال كافة مثيلات الفصل الدراسي، وليس من خلال مثيل محدد.
تُعرف وظيفة العضو الخاصة بالفئة التي تم الإعلان عنها باستخدام كلمة أساسية ثابتة بالطريقة الثابتة. يمكن الوصول إليه من خلال كافة مثيلات الفصل الدراسي، وليس من خلال مثيل محدد.
دعونا نفهم من خلال مثال.
#include int main() { printf('%d',func()); printf(' %d',func()); return 0; } int func() { int count=0; // variable initialization count++; // incrementing counter variable return count; }
في الكود أعلاه، يتم استدعاء الدالة func(). في func()، يتم تحديث متغير العد. بمجرد انتهاء الدالة من تنفيذها، ستتم إزالة ذاكرة متغير العدد. إذا لم نرغب في إزالة العدد من الذاكرة، فسنحتاج إلى استخدام متغير العدد كمتغير ثابت. إذا أعلنا أن المتغير ثابت، فلن تتم إزالة المتغير من الذاكرة حتى عندما تكتمل الوظيفة تنفيذها.
أمر لينكس للرمز البريدي
انتاج |
1 1
متغير ثابت
المتغير الثابت هو متغير يحتفظ بقيمته عبر استدعاءات الوظائف المختلفة.
بناء الجملة
بناء جملة المتغير الثابت موضح أدناه:
static data_type variable_name;
دعونا نلقي نظرة على مثال بسيط للمتغير الثابت.
#include int main() { printf('%d',func()); printf(' %d',func()); return 0; } int func() { static int count=0; count++; return count; }
في الكود أعلاه، أعلنا أن متغير العد ثابت. عند استدعاء func()، يتم تحديث قيمة count إلى 1، وأثناء استدعاء الدالة التالي، تصبح قيمة متغير count 2. لذلك، يمكننا القول أن قيمة المتغير الثابت تستمر داخل استدعاء الدالة .
انتاج |
1 2
وظيفة ثابتة
كما نعلم أن الوظائف غير الثابتة عمومية بشكل افتراضي، فهذا يعني أنه يمكن الوصول إلى الوظيفة خارج الملف أيضًا، ولكن إذا أعلنا أن الوظيفة ثابتة، فهذا يحد من نطاق الوظيفة. يمكن الوصول إلى الوظيفة الثابتة داخل ملف فقط.
إظهار MySQL للمستخدمين
ستبدو الدالة الثابتة كما يلي:
static void func() { printf('Hello javaTpoint'); }
الاختلافات ب/ث المتغير الثابت والعالمي
المتغيرات العامة هي المتغيرات التي تم الإعلان عنها خارج الوظيفة. هذه المتغيرات العامة موجودة في بداية البرنامج، ويبقى نطاقها حتى نهاية البرنامج. ويمكن الوصول إليه خارج البرنامج أيضًا.
خوارزمية k-nn
تقتصر المتغيرات الثابتة على الملف المصدر الذي تم تعريفها فيه، أي لا يمكن الوصول إليها عن طريق الملفات المصدر الأخرى.
كل من المتغيرات الثابتة والعالمية لها تهيئة ثابتة. هنا، تعني التهيئة الثابتة أنه إذا لم نقم بتعيين أي قيمة للمتغير، فسيتم تعيين قيمة 0 للمتغير بشكل افتراضي.
الاختلافات ب / ث متغير عالمي ثابت ومحلي
متغير عالمي ثابت
إذا تم الإعلان عن المتغير باستخدام كلمة أساسية ثابتة خارج الوظيفة، فإنه يُعرف باسم المتغير العام الثابت. يمكن الوصول إليها في جميع أنحاء البرنامج.
متغير محلي ثابت
يُعرف المتغير الذي يحتوي على كلمة أساسية ثابتة داخل دالة باسم المتغير المحلي الثابت. سيكون نطاق المتغير المحلي الثابت هو نفسه المتغيرات المحلية التلقائية، لكن ذاكرته ستكون متاحة طوال تنفيذ البرنامج. عندما تقوم الدالة بتعديل قيمة المتغير المحلي الثابت أثناء استدعاء دالة واحدة، فإنها ستبقى كما هي حتى أثناء استدعاء الدالة التالي.
خصائص المتغير الثابت
فيما يلي خصائص المتغير الثابت:
- يتم تخصيص ذاكرة المتغير الثابت داخل متغير ثابت.
- ذاكرته متاحة في جميع أنحاء البرنامج، لكن النطاق سيبقى كما هو مثل المتغيرات المحلية التلقائية. إنه
- ستستمر القيمة عبر استدعاءات الوظائف المختلفة.
- إذا لم نقم بتعيين أي قيمة للمتغير، فستكون القيمة الافتراضية 0.
- لا يمكن الوصول إلى المتغير العام الثابت خارج البرنامج، بينما يمكن الوصول إلى المتغير العام عن طريق ملفات مصدر أخرى.