סטטי בתכנות C

Static C Programming



במדריך זה נסביר את מילת המפתח הסטטית על ידי יישומה במשתנים ופונקציות. סטטי היא מילת מפתח המשמשת בתכנות C, וניתן ליישמה באמצעות התחביר הבא:

סטטי {סוג נתונים} {שם משתנה}







משתנים מקומיים סטטיים

כאשר משתנה בפונקציה הוא סטטי, המשתנה שומר על ערכו בין קריאות פונקציות.



// דוגמא1.ג

#לִכלוֹל

intכיף 1()
{

intלספור=0;
לספור++;
לַחֲזוֹרלספור;
}

intכיף 2()
{
סטָטִי intלספור=0;
לספור++;
לַחֲזוֹרלספור;
}

intרָאשִׁי()
{
printf ('fun1 שיחה ראשונה חוזרת: %d n',כיף 1());
printf ('fun1 שיחה שניה חוזרת: %d n n',כיף 1());

printf ('fun2 מחזיר שיחה ראשונה: %d n',כיף 2());
printf ('fun2 שיחות 2 חוזרות: %d n',כיף 2());

לַחֲזוֹר 0;
}


בדוגמה 1.c, יש לנו שתי פונקציות: כיף 1 () ו כיף 2 () . ב כיף 1 () , אנו מכריזים על משתנה אחד (ספירה) ומתחילים אותו ל- 0. לאחר מכן, אנו מגדילים את משתנה הספירה ומחזירים את הערך המתקבל. שימוש רָאשִׁי() , אנו קוראים כיף 1 () פעמיים, ובכל פעם, ערך 1 מוחזר מכיוון שמשתנה הספירה מתנקה כאשר הקריאה ל- כיף 1 () הושלם. ב כיף 2 () הכרזנו על משתנה הספירה כמשתנה סטטי. לכן הערך שלה נשמר. שימוש רָאשִׁי() , אנו קוראים כיף 2 () פעמיים: בפעם הראשונה ערך 1 מוחזר, ובפעם השנייה ערך 2 מוחזר.



משתנים גלובליים סטטיים

משתנה גלובלי סטטי מתנהג באותו אופן כמו משתנים גלובליים אחרים, אך לא ניתן לגשת אליו מתוכנית C אחרת.





פונקציות סטטיות

ב- C הפונקציות הן גלובליות כברירת מחדל. עם זאת, אם אנו מכריזים על פונקציה סטטית, הפונקציה היא מקומית ולא ניתן לגשת אליה מתוכנית C אחרת.

אתחול משתנים סטטיים

אם משתנה סטטי אינו מאתחל במפורש, הוא מאתחל כ- 0.



// דוגמה 2. ג

#לִכלוֹל

intרָאשִׁי()
{
סטָטִי intאני;

printf ('ערך i: %d n',אני);

לַחֲזוֹר 0;
}


בדוגמה 2.c הכרזנו על משתנה סטטי i שאינו מאתחל. עם זאת, מכיוון שהמשתנה סטטי, הוא מאותחל אוטומטית ל- 0.

חשוב לציין כי משתנה סטטי חייב לאתחל על ידי מילולי קבוע; איננו יכולים להשתמש בערך ההחזרה של פונקציה לאתחול משתנה סטטי.

// דוגמה 3. ג

#לִכלוֹל

intכיף 1()
{
לַחֲזוֹר 5;
}

intרָאשִׁי()
{
סטָטִי intאני=כיף 1();
printf ('ערך i: %d n',אני);
לַחֲזוֹר 0;
}


בדוגמה 3.c, אנו מנסים לאתחל משתנה סטטי באמצעות ערך ההחזרה של כיף 1 () . עם זאת, כפי שאתה יכול לראות, שגיאה מוחזרת בעת הידור הקוד.

סיכום

אורך החיים של משתנה סטטי וחיי התוכנית שווים.

אם משתנה סטטי אינו מאתחל, הוא יקבל ערך ברירת מחדל של 0.

לא ניתן לגשת למשתנה סטטי גלובלי ולא לפונקציה סטטית מתוכנית אחרת מזו שבה היא הוגדרה.