logo

סטטי ב-C

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

. שווה ל-java

ניתן להשתמש במילת מפתח סטטית במצבים הבאים:

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

בואו נבין דרך דוגמה.

 #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(), משתנה count מתעדכן. ברגע שהפונקציה תסיים את ביצועה, הזיכרון של משתנה הספירה יוסר. אם אנחנו לא רוצים להסיר את הספירה מהזיכרון, אז אנחנו צריכים להשתמש במשתנה הספירה כסטטי. אם נכריז על המשתנה כסטטי, אז המשתנה לא יוסר מהזיכרון גם כשהפונקציה תסיים את ביצועה.

תְפוּקָה

 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 

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

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

הפונקציה הסטטית תיראה כך:

 static void func() { printf('Hello javaTpoint'); } 

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

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

משתנים סטטיים מוגבלים לקובץ המקור שבו הם מוגדרים, כלומר, הם אינם נגישים לקבצי המקור האחרים.

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

הבדלים שחור/לבן סטטי מקומי ומשתנה גלובלי סטטי

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

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

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

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

מאפיינים של משתנה סטטי

להלן המאפיינים של משתנה סטטי:

  • הזיכרון של משתנה סטטי מוקצה בתוך משתנה סטטי.
  • הזיכרון שלו זמין בכל התוכנית, אך ההיקף יישאר זהה למשתנים המקומיים האוטומטיים. שֶׁלָה
  • הערך יימשך לאורך קריאות הפונקציה השונות.
  • אם לא נקצה ערך כלשהו למשתנה, אז ערך ברירת המחדל יהיה 0.
  • לא ניתן לגשת למשתנה סטטי גלובלי מחוץ לתוכנית, בעוד שקובצי מקור אחרים יכולים לגשת למשתנה גלובלי.