यहां दो अलग-अलग अवधारणाएं हैं -
- स्कोप, जो निर्धारित करता है कि किसी नाम को कहां एक्सेस किया जा सकता है - वैश्विक और स्थानीय
- संग्रहण अवधि, जो निर्धारित करती है कि कब एक चर बनाया और नष्ट किया गया - स्थिर और स्वचालित
दायरा
स्थानीय चर का उपयोग केवल उन कथनों द्वारा किया जा सकता है जो उस फ़ंक्शन या कोड के ब्लॉक के अंदर हैं। स्थानीय चर अपने आप कार्य करने के लिए ज्ञात नहीं हैं।
उदाहरण
#include <iostream> using namespace std; int main () { // Local variable declaration: int a, b; int c; // actual initialization a = 10; b = 20; c = a + b; cout << c; return 0; }
यह आउटपुट देगा -
आउटपुट
30
वैश्विक चर सभी कार्यों के बाहर परिभाषित किए जाते हैं, आमतौर पर कार्यक्रम के शीर्ष पर। वैश्विक चर आपके कार्यक्रम के पूरे जीवनकाल में अपना मूल्य रखेंगे। किसी भी फ़ंक्शन द्वारा एक वैश्विक चर का उपयोग किया जा सकता है।
उदाहरण
#include <iostream> using namespace std; // Global variable declaration: int g; int main () { // Local variable declaration: int a, b; // actual initialization a = 10; b = 20; g = a + b; cout << g; return 0; }
यह आउटपुट देगा -
आउटपुट
30
संग्रहण अवधि
स्वचालित चर स्थानीय चर होते हैं जिनका जीवनकाल समाप्त हो जाता है जब निष्पादन अपना दायरा छोड़ देता है, और जब दायरा फिर से दर्ज किया जाता है तो फिर से बनाया जाता है।
उदाहरण
for (int i =0 0; i < 5; ++i) { int n = 0; printf("%d ", ++n); // prints 1 1 1 1 1 - the previous value is lost }
स्थैतिक चर का जीवनकाल होता है जो कार्यक्रम के अंत तक रहता है। यदि वे स्थानीय चर हैं, तो उनका मान तब बना रहता है जब निष्पादन उनके दायरे को छोड़ देता है।
for (int i = 0; i < 5; ++i) { static int n = 0; printf("%d ", ++n); // prints 1 2 3 4 5 - the value persists }
ध्यान दें कि स्थिर भंडारण अवधि के अलावा स्थिर कीवर्ड के विभिन्न अर्थ हैं। साथ ही, C++ में auto कीवर्ड का अर्थ अब स्वचालित संग्रहण अवधि नहीं है; अब इसका अर्थ है स्वचालित प्रकार, चर के प्रारंभकर्ता से घटाया गया।