C भंडारण वर्ग

इस ट्यूटोरियल में, आप स्थानीय और वैश्विक चर के दायरे और जीवनकाल के बारे में जानेंगे। साथ ही, आप स्थैतिक और पंजीकृत चर के बारे में जानेंगे।

C प्रोग्रामिंग के हर वेरिएबल में दो गुण होते हैं: टाइप और स्टोरेज क्लास।

प्रकार एक चर के डेटा प्रकार को संदर्भित करता है। और, भंडारण वर्ग एक चर के दायरे, दृश्यता और जीवनकाल को निर्धारित करता है।

भंडारण वर्ग 4 प्रकार के होते हैं:

  1. स्वचालित
  2. बाहरी
  3. स्थिर
  4. रजिस्टर करें

स्थानीय चर

किसी ब्लॉक के अंदर घोषित चर स्वचालित या स्थानीय चर होते हैं। स्थानीय वैरिएबल केवल उस ब्लॉक के अंदर मौजूद होता है जिसमें इसे घोषित किया जाता है।

एक उदाहरण लेते हैं।

 #include int main(void) ( for (int i = 0; i < 5; ++i) ( printf("C programming"); ) // Error: i is not declared at this point printf("%d", i); return 0; )

जब आप उपरोक्त कार्यक्रम चलाते हैं, तो आपको एक अघोषित पहचानकर्ता त्रुटि मिलेगी। यह है क्योंकि मैं forपाश ब्लॉक के अंदर घोषित किया जाता है । ब्लॉक के बाहर, यह अघोषित है।

एक और उदाहरण लेते हैं।

  int main() ( int n1; // n1 is a local variable to main() ) void func() ( int n2; // n2 is a local variable to func() ) 

उपरोक्त उदाहरण में, n1 स्थानीय है main()और n2 स्थानीय है func()

इसका अर्थ है कि आप n1 चर को अंदर नहीं ले जा सकते func()क्योंकि यह केवल अंदर मौजूद है main()। इसी प्रकार, आप n2 चर को अंदर तक नहीं पहुँचा सकते main()क्योंकि यह केवल अंदर मौजूद है func()

वैश्विक चर

चर जो सभी कार्यों के बाहर घोषित किए जाते हैं उन्हें बाहरी या वैश्विक चर के रूप में जाना जाता है। वे कार्यक्रम के अंदर किसी भी समारोह से सुलभ हैं।

उदाहरण 1: वैश्विक चर

 #include void display(); int n = 5; // global variable int main() ( ++n; display(); return 0; ) void display() ( ++n; printf("n = %d", n); ) 

आउटपुट

 n = 7

मान लीजिए, एक वैश्विक चर में घोषित किया गया है file1। यदि आप किसी भिन्न फ़ाइल में उस चर का उपयोग करने का प्रयास करते हैं file2, तो कंपाइलर शिकायत करेगा। इस समस्या को हल करने के लिए, कीवर्ड externका उपयोग file2यह इंगित करने के लिए किया जाता है कि बाहरी चर किसी अन्य फ़ाइल में घोषित किया गया है।

चर रजिस्टर

registerकीवर्ड रजिस्टर चर घोषित करने के लिए प्रयोग किया जाता है। स्थानीय चर की तुलना में रजिस्टर चर अधिक तेज़ होने चाहिए थे।

हालाँकि, कोड संकलन में आधुनिक कंपाइलर बहुत अच्छे हैं, और एक दुर्लभ संभावना है कि रजिस्टर चर का उपयोग करने से आपका प्रोग्राम तेज हो जाएगा।

जब तक आप एम्बेडेड सिस्टम पर काम नहीं कर रहे हैं, जहां आप जानते हैं कि दिए गए एप्लिकेशन के लिए कोड को कैसे ऑप्टिमाइज़ करना है, रजिस्टर चर का कोई उपयोग नहीं है।

स्थैतिक चर

staticकीवर्ड का उपयोग करके एक स्थिर चर घोषित किया जाता है । उदाहरण के लिए;

 स्थिर int i;

एक स्थिर चर का मान कार्यक्रम के अंत तक बना रहता है।

उदाहरण 2: स्थैतिक चर

 #include void display(); int main() ( display(); display(); ) void display() ( static int c = 1; c += 5; printf("%d ",c); ) 

आउटपुट

 ६ ११

पहले फ़ंक्शन कॉल के दौरान, c का मान 1 से प्रारंभ होता है। इसका मान 5 से बढ़ जाता है। अब, c का मान 6 है, जो स्क्रीन पर मुद्रित होता है।

दूसरे फ़ंक्शन कॉल के दौरान, c को फिर से 1 में आरंभीकृत नहीं किया जाता है। ऐसा इसलिए है क्योंकि c एक स्थिर चर है। मान c को 5 से बढ़ाया जाता है। अब, इसका मान 11 होगा, जो स्क्रीन पर मुद्रित होता है।

दिलचस्प लेख...