पाठ 14 / 38
स्कोप और स्टोरेज
Local व global scope और static variables function calls के बीच अपना value कैसे रखते हैं, समझें।
लोकल बनाम ग्लोबल
लोकल वेरिएबल फंक्शन के अंदर घोषित होता है और सिर्फ उस फंक्शन के चलने तक रहता है। ग्लोबल वेरिएबल हर फंक्शन के बाहर घोषित होता है और पूरी फाइल में दिखाई देता है।
static अपना मान बनाए रखता है
static लोकल वेरिएबल केवल एक बार इनिशियलाइज़ होता है और सामान्य लोकल वेरिएबल के विपरीत, कॉल्स के बीच अपना मान याद रखता है।
void counter(void) {
static int count = 0;
count++;
printf("%d\n", count);
}
// counter(); counter(); counter();
// prints 1, 2, 3
Output:
1 2 3
त्वरित जाँच: जब किसी फंक्शन का रिटर्न होता है, तो उसके सामान्य (non-static) लोकल वेरिएबल का क्या होता है?
- अगली कॉल के लिए मान बना रहता है
- यह नष्ट हो जाता है
- यह ग्लोबल बन जाता है
- यह अगली call में copy होता है
Answer
यह नष्ट हो जाता है — लोकल वेरिएबल स्टैक पर होते हैं और फंक्शन रिटर्न होते ही मुक्त हो जाते हैं।