स्थानीय और वैश्विक चर के बीच अंतर
विषय
जैसा कि हमने पहले चर्चा की थी, एक चर एक नाम है, जिसे मेमोरी स्थान पर दिया जाता है, और इसका उपयोग करने से पहले इसे घोषित किया जाना चाहिए। सी में, सभी चर कार्यक्रम की शुरुआत में घोषित किए जाते हैं। C ++ में, चर किसी भी समय, निर्देशों में उपयोग किए जाने से पहले घोषित किए जा सकते हैं।
चर को 'स्थानीय' और 'वैश्विक' चर में वर्गीकृत किया गया है, जो हमारी चर्चा का मुख्य विषय है। यहां स्थानीय और वैश्विक चर के बीच मुख्य अंतर यह है कि एक फ़ंक्शन चर के अंदर एक स्थानीय चर घोषित किया जाता है। इसके विपरीत, कार्यक्रम में कार्यों के बाहर वैश्विक चर घोषित किया जाता है।
आइए एक तुलना चार्ट के साथ स्थानीय और वैश्विक चर के बीच कुछ और अंतरों का अध्ययन करें।
- तुलना चार्ट
- परिभाषा
- मुख्य अंतर
- लाभ
- नुकसान
- निष्कर्ष
तुलना चार्ट:
कम्पास के लिए आधार | स्थानीय संस्करण | अंतर्राष्ट्रीय संस्करण |
---|---|---|
घोषणा | चर एक फ़ंक्शन के अंदर घोषित किए जाते हैं। | किसी भी फ़ंक्शन के बाहर चर घोषित किए जाते हैं। |
क्षेत्र | एक फ़ंक्शन के भीतर, जिसके अंदर उन्हें घोषित किया गया है। | पूरे कार्यक्रम के दौरान। |
मूल्य | कचरा मूल्य के भंडारण में अनधिकृत स्थानीय चर परिणाम। | डिफ़ॉल्ट रूप से Uninitialized वैश्विक वैरिएबल स्टोर शून्य है। |
पहुंच | केवल एक बयान के अंदर, एक समारोह के अंदर, जिसमें वे घोषित किए जाते हैं। | पूरे कार्यक्रम में किसी भी बयान से पहुँचा। |
डेटा साझा करना | नहीं दिया गया | सुविधा |
जिंदगी | जब फ़ंक्शन ब्लॉक में प्रवेश किया जाता है और बाहर निकलने पर नष्ट हो जाता है। | पूरे समय आपके कार्यक्रम के क्रियान्वयन के लिए अस्तित्व में रहें। |
भंडारण | निर्दिष्ट किए जाने तक स्थानीय चर स्टैक पर संग्रहीत किए जाते हैं। | एक संकलक द्वारा तय किए गए निश्चित स्थान पर संग्रहीत। |
पैरामीटर पासिंग | आवश्यकता है | वैश्विक चर के लिए आवश्यक नहीं है। |
परिवर्तनशील मान में परिवर्तन | स्थानीय चर में निहित कोई भी संशोधन कार्यक्रम के अन्य कार्यों को प्रभावित नहीं करता है। | किसी फ़ंक्शन के वैश्विक चर में लागू किए गए परिवर्तन पूरे कार्यक्रम में परिवर्तनों को दर्शाते हैं। |
स्थानीय चर की परिभाषा
ए स्थानीय चर हमेशा एक फ़ंक्शन ब्लॉक के अंदर घोषित किया जाता है। सी में, एक कोड ब्लॉक की शुरुआत में एक स्थानीय चर घोषित किया जाता है। C ++ में, उन्हें कोड ब्लॉक में कहीं भी उनके उपयोग से पहले घोषित किया जा सकता है। स्थानीय चर को केवल एक फ़ंक्शन के अंदर लिखे गए बयानों द्वारा पहुँचा जा सकता है जिसमें स्थानीय चर घोषित किए जाते हैं। वे इस अर्थ में सुरक्षित हैं कि, उन्हें उसी कार्यक्रम के किसी अन्य कार्य द्वारा पहुँचा नहीं जा सकता है।
फ़ंक्शन के ब्लॉक के निष्पादन तक स्थानीय चर मौजूद होता है, और इस तरह ब्लॉक के बाहर निकलने के बाद नष्ट हो जाता है। स्थानीय चर अपनी सामग्री खो देते हैं जैसे ही निष्पादन ब्लॉक को छोड़ दिया जाता है जिसमें वे घोषित होते हैं।
इसके पीछे कारण यह है कि जब तक कि उनके विशेष भंडारण को निर्दिष्ट नहीं किया जाता है तब तक स्थानीय चर स्टैक पर संग्रहीत किए जाते हैं। स्टैक प्रकृति में गतिशील है, और स्मृति स्थान में परिवर्तन इस कारण होता है कि जैसे ही एक फ़ंक्शन का ब्लॉक मौजूद होता है, स्थानीय चर उनका मान नहीं रखते।
ध्यान दें:
हालाँकि, 'स्थिर' संशोधक का उपयोग करके स्थानीय चर के मान को बनाए रखने का एक तरीका है।
ग्लोबल वेरिएबल की परिभाषा
ए वैश्विक चर एक कार्यक्रम में मौजूद सभी कार्यों के बाहर घोषित किया जाता है। स्थानीय चर के विपरीत, वैश्विक चर को किसी कार्यक्रम में मौजूद किसी भी फ़ंक्शन द्वारा एक्सेस किया जा सकता है। वैश्विक चर बहुत विश्वसनीय नहीं हैं क्योंकि कार्यक्रम में मौजूद किसी भी फ़ंक्शन द्वारा उनके मूल्य को बदला जा सकता है।
वे तब तक अस्तित्व में रहते हैं जब तक कि पूरे कार्यक्रम को पूरी तरह से निष्पादित नहीं किया जाता है। वैश्विक चर अपने मूल्यों को बनाए रखते हैं जब तक कि कार्यक्रम निष्पादन में न हो। कारण यह है कि वे मेमोरी के एक निश्चित क्षेत्र पर संकलित करके तय किए गए हैं।
एक ग्लोबल वैरिएबल उन स्थितियों में मददगार होता है, जहां एक ही डेटा पर कई फंक्शंस पहुंच रहे हैं। बड़ी संख्या में वैश्विक चर का उपयोग करना समस्याग्रस्त हो सकता है, क्योंकि वैश्विक चर के मूल्य में अवांछित परिवर्तन हो सकते हैं।
- स्थानीय चर को 'स्थानीय' कहा जाता है क्योंकि वे केवल एक फ़ंक्शन में लिखे गए बयानों के लिए जाने जाते हैं, जिसके अंदर उन्हें घोषित किया जाता है और उस फ़ंक्शन ब्लॉक के बाहर मौजूद किसी अन्य फ़ंक्शन के लिए नहीं जाना जाता है। एक वैश्विक चर के मामले में, वे एक कार्यक्रम में मौजूद प्रत्येक फ़ंक्शन के लिए जाने जाते हैं; इसलिए, उन्हें 'वैश्विक' कहा जाता है।
- जब तक वे संकलक द्वारा तय किए गए एक निश्चित स्थान पर संग्रहीत होते हैं, तब तक वैश्विक चर अपना मूल्य बरकरार रखते हैं। स्थानीय चर स्टैक पर संग्रहीत होते हैं; इसलिए, वे अपने मूल्य को बनाए नहीं रखते हैं क्योंकि 'स्टैक' प्रकृति में गतिशील है, लेकिन संकलक को 'स्थिर' संशोधक का उपयोग करके, उनके मूल्य को बनाए रखने के लिए निर्देशित किया जा सकता है।
- यदि एक वैश्विक और एक स्थानीय चर एक ही नाम के साथ घोषित किए जाते हैं, तो एक कोड ब्लॉक के सभी बयान जिसमें स्थानीय चर घोषित किया जाता है, केवल एक स्थानीय चर को संदर्भित करेगा और एक वैश्विक चर के लिए कोई प्रभाव नहीं डालेगा।
- एक स्थानीय चर को नष्ट कर दिया जाता है जब कार्यक्रम का नियंत्रण उस ब्लॉक से बाहर निकल जाता है जिसमें स्थानीय चर घोषित किया जाता है। हालाँकि, एक वैश्विक चर नष्ट हो जाता है जब पूरे कार्यक्रम को समाप्त कर दिया जाता है।
लाभ
स्थानीय चर
- एक स्थानीय चर का मुख्य लाभ यह है कि डेटा का कोई आकस्मिक परिवर्तन नहीं होता है। वैरिएबल को एक ब्लॉक के अंदर घोषित किया गया है, और कोड का ये ब्लॉक वैरिएबल का उपयोग करता है और अवांछनीय दुष्प्रभावों से बचता है।
- स्थानीय चर अवधि की सीमित मात्रा के लिए मेमोरी का उपभोग करते हैं, केवल जब चर वाले ब्लॉक को निष्पादित किया जाता है।
वैश्विक चर
- वैश्विक चर बहुत उपयोगी होते हैं जब आप उसी डेटा में हेरफेर कर रहे कार्यक्रम में कई कार्यों से निपटते हैं।
- पूरे कार्यक्रम में लागू किए जाने वाले परिवर्तनों को एक वैश्विक चर को लागू करने के माध्यम से आसान होगा।
- हम कहीं से भी या कार्यक्रम के किसी भी यादृच्छिक कार्य के माध्यम से पहुंच सकते हैं।
नुकसान
स्थानीय चर
- स्थानीय चर का दायरा प्रतिबंधित है।
- डेटा साझा करने से मना करें।
- वे कॉल के बीच डेटा को बनाए रखने में सक्षम नहीं हैं क्योंकि स्थानीय चर उत्पन्न होते हैं और प्रत्येक प्रविष्टि और ब्लॉक से बाहर निकल जाते हैं। हालांकि, मूल्यों को बनाए रखने के लिए स्थिर संशोधक का उपयोग किया जा सकता है।
वैश्विक चर
- बड़ी संख्या में वैश्विक चरों का उपयोग करने से कार्यक्रम की त्रुटियां उत्पन्न हो सकती हैं।
- मुख्य समस्या जो इसका कारण है वह पूरे कार्यक्रम में प्रसारित वैश्विक चर के कारण परिवर्तनों की आकस्मिक घटना है।
- यह कोड रीफैक्टरिंग का संचालन करने की आवश्यकता को भी बढ़ा सकता है, जो एक बहुत व्यापक प्रक्रिया है जहां पूरे प्रोग्राम कोड का पुनर्गठन किया जाता है।
निष्कर्ष:
कार्यक्रम लिखते समय स्थानीय और वैश्विक चर दोनों आवश्यक और समान रूप से आवश्यक हैं। हालाँकि, बड़ी संख्या में वैश्विक चर की घोषणा करना एक बड़े पैमाने पर कार्यक्रम में समस्याग्रस्त हो सकता है, क्योंकि इससे वैश्विक चर में अवांछित परिवर्तन हो सकते हैं; और यह पहचानना कठिन हो जाएगा कि किसी कार्यक्रम के किस हिस्से में यह बदलाव किया गया है। इसलिए, किसी को अनावश्यक वैश्विक चर घोषित करने से बचना चाहिए।