מהי מחלקת אחסון ב- C ++ וסוגיה?



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

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

בואו נתחיל.





מהי מחלקת אחסון ב- C ++?

לכל משתנה ב- C ++ יש סוג נתונים ומחלקת אחסון. סוג הנתונים מציין את סוג הנתונים שניתן לאחסן במשתנה כגון int, float, char וכו 'מחלקת האחסון שולטת בשני מאפיינים שונים של משתנה: אורך חיים והיקף.

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



סוגי מחלקת אחסון

יש חמש שיעורי אחסון בתוכנית C ++:

  • אוטומטי
  • הירשם
  • סטָטִי
  • חיצוני
  • מִשְׁתַנֶה

בואו נדון בפירוט על כל אחת משיעורי האחסון.

כיתת אחסון אוטומטי

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



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

ניתן לגשת למשתנים אוטומטיים מחוץ לתחום שלהם באמצעות משתנה מצביע. עליכם להצביע על אותו מיקום זיכרון בו נמצאים המשתנים.

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

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

תחביר:

סוג סוג var_name1 [= ערך]

אוֹ

סוג נתונים אוטומטי var_name1 [= ערך]

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

רשום מחלקת אחסון

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

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

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

הגודל המקסימלי של המשתנה שווה לגודל המרשם (כלומר מילה אחת בערך). לא ניתן להחיל עליו מפעיל '&' לא אחיד מכיוון שאין לו מיקום זיכרון.

תחביר:

רשום סוג סוג var_name1 [= ערך]

דוגמא:

כיצד ליצור מערך אובייקטים בג'אווה - -
{register int pi}

הגדרת 'רישום' אינה אומרת שהמשתנה יאוחסן ברשומה. זה עשוי להיות מאוחסן במרשם בהתאם למגבלות החומרה וההטמעה.

בואו נסתכל על דוגמה לשיעורי רישום ואחסון אוטומטי.

דוגמא:

# כלול באמצעות מרחב השמות std // מצהיר על המשתנה שאמור להיעשות חיצוני // ניתן לאתחל גם ערך אינטלי ל x int x void autoStorageClass () {printf ('nDemonstrating auto classnn') // הכרזה על משתנה אוטומטי (פשוט // כתיבת 'int a = 32' עובדת גם כן) int num = 32 // הדפסת המשתנה האוטומטי 'a' printf ('ערך המשתנה' num '' 'שהוכרז כ- auto:% dn', num) printf ( '--------------------------------')} בטל registerStorageClass () {printf ('nDemonstrating register class') / / הכרזה על רישום משתנה רישום char c = 'G' // הדפסת משתנה הרישום 'b' printf ('ערך המשתנה' c '' 'שהוכרז כ- register:% dn', c) printf ('---- ---------------------------- ')} int main () {// כדי להדגים מחלקת אחסון אוטומטית autoStorageClass () // כדי להדגים רישום מחלקת אחסון registerStorageClass () להחזיר 0}

תְפוּקָה:

פלט - מחלקת אחסון ב- C ++ - אדוריקהכיתת אחסון סטטית

מחלקת האחסון הסטטי משמשת להצהרה משתנים סטטיים . משתנים סטטיים שומרים על ערכם (כלומר הערך האחרון) גם כאשר הם מחוץ לתחום שלהם. משתנים סטטיים מאותחל רק פעם אחת &להתקיים עד לסיום התוכנית.

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

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

תחביר:

סוג נתונים סטטי var_name1 [= value]

דוגמא:

#include function void (void) static int c = 5 // משתנה סטטי גלובלי main () {while (c--) {function ()} return 0} function void (void) {static int cnt = 2 cnt ++ std :: סיבוב<< 'cnt is ' << cnt std::cout << ' and c is ' << c << std::endl } 

תְפוּקָה:

מחלקת אחסון חיצונית

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

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

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

תחביר

סוג נתונים חיצוני var_name1

דוגמא

#include int cnt extern void write_extern () main () {cnt = 5 write_extern ()}

קובץ שני: support.cpp

#include extern int cnt void write_extern (void) {std :: cout<< 'Count is ' << cnt << std::endl } 

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

$ g ++ main.cpp support.cpp -o לכתוב

זה יפיק תוכנית הפעלה של כתיבה, תנסה לבצע כתיבה ובדוק את התוצאה כדלקמן ומינוס

$. / לכתוב

5

להתקדם עם מחלקת האחסון ב- C ++, בואו נסתכל על השיעור האחרון, כלומר מחלקת אחסון משתנה.

כיתת אחסון משתנה

מפרט משתנה חל רק על אובייקטים של מחלקה, המאפשר לחבר באובייקט לעקוף את פונקציית ה- const member. כלומר, ניתן לשנות איבר משתנה על ידי פונקציית חבר const.

לבסוף, בואו נסתכל על טבלת ההשוואה כדי להבין את ההבדלים בין מחלקות אחסון שונות.

מחלקת אחסון

מילת מפתח

לכל החיים

רְאוּת

ערך התחלתי

אוֹטוֹמָטִי

הפעל שאילתת כוורת משורת הפקודה

אוטומטי

בלוק פונקציות

מְקוֹמִי

אַשׁפָּה

חיצוני

חיצוני

תוכנית שלמה

גלוֹבָּלִי

אֶפֶס

סטָטִי

סטָטִי

תוכנית שלמה

מְקוֹמִי

אֶפֶס

הירשם

הירשם

בלוק פונקציות

מְקוֹמִי

עובדתי באמצעות רקורסיה בסי '

אַשׁפָּה

מִשְׁתַנֶה

מִשְׁתַנֶה

מעמד

מְקוֹמִי

אַשׁפָּה

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

לפיכך הגענו לסוף מאמר זה בנושא 'שיעורי אחסון ב- C ++'.

אם ברצונך ללמוד עוד, עיין ב מאת אדוריקה, חברת למידה מקוונת אמינה. קורס ההכשרה וההסמכה של Java J2EE ו- SOA של אדוריקה נועד להכשיר אותך לקונספטים מרכזיים של Java וגם עם מסגרות Java שונות כמו Hibernate & Spring.

יש לך שאלה עבורנו? אנא הזכיר זאת במדור התגובות בבלוג זה ונחזור אליך בהקדם האפשרי.