# स्कोप और स्टोरेज — C प्रोग्रामिंग

Source: https://www.geekswithgeeks.com/hi/c/c-scope

> वेरिएबल कहाँ रहता है और कब तक जीवित रहता है।

## लोकल बनाम ग्लोबल

**लोकल** वेरिएबल फंक्शन के अंदर घोषित होता है और सिर्फ उस फंक्शन के चलने तक रहता है। **ग्लोबल** वेरिएबल हर फंक्शन के बाहर घोषित होता है और पूरी फाइल में दिखाई देता है।

## static अपना मान बनाए रखता है

`static` लोकल वेरिएबल केवल एक बार इनिशियलाइज़ होता है और सामान्य लोकल वेरिएबल के विपरीत, कॉल्स के बीच **अपना मान याद रखता है**।

```c
void counter(void) {
    static int count = 0;
    count++;
    printf("%d\n", count);
}

// counter(); counter(); counter();
// prints 1, 2, 3
```

Output:

```
1
2
3
```

**Quiz:** जब किसी फंक्शन का रिटर्न होता है, तो उसके सामान्य (non-static) लोकल वेरिएबल का क्या होता है?

- [ ] अगली कॉल के लिए मान बना रहता है
- [x] यह नष्ट हो जाता है
- [ ] यह ग्लोबल बन जाता है

*Answer:* यह नष्ट हो जाता है. लोकल वेरिएबल स्टैक पर होते हैं और फंक्शन रिटर्न होते ही मुक्त हो जाते हैं।
