Global variable
कंप्यूटर प्रोग्रामिंग में, एक वैश्विक चर वैश्विक दायरे के साथ एक चर है, जिसका अर्थ है कि यह पूरे कार्यक्रम में दिखाई देता है (इसलिए सुलभ), जब तक कि छाया न हो। सभी वैश्विक चरों के समूह को वैश्विक पर्यावरण या वैश्विक स्थिति के रूप में जाना जाता है। संकलित भाषाओं में, वैश्विक चर आम तौर पर स्थिर चर होते हैं, जिनकी सीमा (जीवनकाल) कार्यक्रम का पूरा रनटाइम होती है, हालांकि व्याख्या की गई भाषाओं में (कमांड-लाइन दुभाषियों सहित), वैश्विक चर को आम तौर पर घोषित होने पर गतिशील रूप से आवंटित किया जाता है, क्योंकि वे समय से पहले ज्ञात नहीं होते हैं। कुछ भाषाओं में, सभी चर डिफ़ॉल्ट रूप से वैश्विक या वैश्विक होते हैं, जबकि अधिकांश आधुनिक भाषाओं में चर का दायरा सीमित होता है, आम तौर पर शाब्दिक दायरा होता है, हालांकि वैश्विक चर अक्सर कार्यक्रम के शीर्ष स्तर पर एक चर घोषित करके उपलब्ध होते हैं। हालाँकि, अन्य भाषाओं में, वैश्विक चर मौजूद नहीं हैं; ये आम तौर पर मॉड्यूलर प्रोग्रामिंग भाषाएँ हैं जो एक मॉड्यूल संरचना को लागू करती हैं, या वर्ग-आधारित ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषाएँ जो एक वर्ग संरचना को लागू करती हैं। वैश्विक चरों के साथ अंतःक्रिया तंत्र का उपयोग वैश्विक पर्यावरण (वैश्विक स्थिति भी देखें) तंत्र कहलाता है। वैश्विक पर्यावरण प्रतिमान स्थानीय पर्यावरण प्रतिमान के विपरीत है, जहां सभी चर बिना किसी साझा स्मृति के स्थानीय होते हैं (और इसलिए सभी अंतःक्रियाओं को संदेश पारित करने के लिए फिर से संचालित किया जा सकता है)। वैश्विक चर का उपयोग कोड के उन वर्गों के बीच जानकारी पारित करने के लिए किया जाता है जो समवर्ती धागे और संकेत संचालकों जैसे कॉलर/कैली संबंध को साझा नहीं करते हैं। भाषाएँ (सी सहित) जहाँ प्रत्येक फ़ाइल एक अंतर्निहित नेमस्पेस को परिभाषित करती है, वैश्विक नेमस्पेस वाली भाषाओं के साथ देखी जाने वाली अधिकांश समस्याओं को समाप्त कर देती है, हालाँकि कुछ समस्याएं उचित एनकैप्सुलेशन के बिना बनी रह सकती हैं। उचित लॉकिंग के बिना (जैसे कि म्यूटेक्स के साथ), वैश्विक चर का उपयोग करने वाला कोड संरक्षित मेमोरी में केवल पढ़ने के मानों को छोड़कर थ्रेड-सुरक्षित नहीं होगा। पर्यावरण चर पर्यावरण चर कुछ ऑपरेटिंग सिस्टम द्वारा प्रदान की जाने वाली सुविधा है। ओएस के खोल के भीतर (यूनिक्स में केएसएच, लिनक्स में बैश, डॉस में COMMAND.COM और विंडोज में CMD.EXE) वे एक प्रकार के चर हैंः उदाहरण के लिए, यूनिक्स और संबंधित प्रणालियों में एक साधारण चर एक पर्यावरण चर बन जाता है जब निर्यात मुख्य शब्द का उपयोग किया जाता है। शेल के अलावा अन्य प्रोग्राम कोड को उन्हें एपीआई कॉल द्वारा एक्सेस करना होता है, जैसे कि गेटएनवी () और सेटएनवी ()। वे उस प्रक्रिया के लिए स्थानीय हैं जिसमें उन्हें स्थापित किया गया था। इसका मतलब है कि अगर हम दो अंतिम खिड़कियाँ खोलते हैं (दो अलग-अलग प्रक्रियाएँ चल रही हैं) और एक खिड़की में पर्यावरण चर के मूल्य को बदलते हैं, तो वह परिवर्तन दूसरी खिड़की द्वारा नहीं देखा जाएगा। जब एक बाल प्रक्रिया बनाई जाती है, तो यह सभी पर्यावरण चर और उनके मूल्यों को मूल प्रक्रिया से विरासत में प्राप्त करती है। आमतौर पर, जब कोई प्रोग्राम किसी अन्य प्रोग्राम को कॉल करता है, तो यह पहले फोर्क करके चाइल्ड प्रोसेस बनाता है, फिर बच्चा आवश्यकतानुसार वातावरण को समायोजित करता है और अंत में बच्चा खुद को कॉल किए जाने वाले प्रोग्राम से बदल देता है। इसलिए बाल प्रक्रियाएँ अपने साथियों के साथ संवाद करने के लिए पर्यावरण चर का उपयोग नहीं कर सकती हैं, जिससे दूरी की समस्या पर कार्रवाई से बचा जा सके। कई गैर-संरचित भाषाएँ, जैसे (बेसिक, कोबोल और फोरट्रान I (1956)) केवल वैश्विक चर प्रदान करती हैं। फोरट्रान II (1958) ने स्थानीय चर के साथ सबरूटीन और वैश्विक चर तक पहुँच के लिए सामान्य मुख्य शब्द की शुरुआत की। फोरट्रान में कॉमन का उपयोग फोरट्रान 77 में जारी रहा, और पी. एल./एस. क्यू. एल. जैसी बाद की भाषाओं को प्रभावित किया। ग्लोबलों के लिए नामित कॉमन समूह कुछ हद तक संरचित नेमस्पेस की तरह व्यवहार करते हैं। चर भी स्वाभाविक रूप से फोर्थ, लुआ, पर्ल और अधिकांश कोशों में वैश्विक हैं। सी और सी + + भाषा के अनुसार सी भाषा में वैश्विक मुख्य शब्द नहीं है। हालांकि, एक फ़ंक्शन के बाहर घोषित चर में "फ़ाइल स्कोप" होता है, जिसका अर्थ है कि वे फ़ाइल के भीतर दिखाई देते हैं। फ़ाइल दायरे के साथ घोषित चर उनकी घोषणा और संकलन इकाई (. c फ़ाइल) के अंत के बीच दिखाई देते हैं (जब तक कि एक निकट दायरे में एक समान नाम वाली वस्तु द्वारा छाया नहीं की जाती है, जैसे कि एक स्थानीय चर) और उनमें निहित रूप से बाहरी संबंध होता है और इस प्रकार वे न केवल. c फ़ाइल या संकलन इकाई को दिखाई देते हैं जिसमें उनकी घोषणाएं होती हैं, बल्कि हर अन्य संकलन इकाई को भी दिखाई देते हैं जो पूर्ण कार्यक्रम बनाने के लिए जुड़ी होती है। हालांकि, अन्य फाइलों में इस तरह के चर के उपयोग के लिए बाहरी जुड़ाव पर्याप्त नहीं हैः एक संकलन इकाई के लिए इस तरह के वैश्विक चर तक सही ढंग से पहुंचने के लिए, इसे अपने प्रकार को जानने की आवश्यकता होगी। यह बाहरी मुख्य शब्द का उपयोग करके प्रत्येक फ़ाइल में चर घोषित करके पूरा किया जाता है। (यह प्रत्येक फाइल में घोषित किया जाएगा लेकिन केवल एक में परिभाषित किया जा सकता है।) इस तरह की बाहरी घोषणाओं को अक्सर एक साझा हेडर फ़ाइल में रखा जाता है, क्योंकि एक परियोजना में सभी. c फ़ाइलों के लिए कम से कम एक. h फ़ाइल को शामिल करना आम बात हैः मानक हेडर फ़ाइल errno.h एक उदाहरण है, जो एक परियोजना में सभी मॉड्यूल के लिए त्रुटि चर को सुलभ बनाता है। जहां इस वैश्विक अभिगम तंत्र को समस्याग्रस्त माना जाता है, इसे स्थिर मुख्य शब्द का उपयोग करके अक्षम किया जा सकता है जो एक चर को फ़ाइल दायरे तक सीमित करता है, और एक संकलन (या लिंकिंग) त्रुटि को बढ़ाने के लिए इसे बाहरी के साथ आयात करने का प्रयास करेगा। सी में "वैश्विक" चर का एक उदाहरण हैः #include <stdio.h>// यह फ़ाइल-स्कोप चर (आंतरिक लिंकेज के साथ) है, जो केवल// इस संकलन इकाई में दिखाई देता है। स्थैतिक पूर्णांक साझा = 3;// इसमें बाहरी संबंध है (इस संकलन इकाई तक सीमित नहीं)। एक्सटर्न इंट ओवर _ शेयर्ड;// इसके अलावा आंतरिक लिंकेज। int ओवर _ शेयर्ड _ टू = 2; एक फ़ंक्शन में फ़ाइल-स्कोप चर के लिए स्थिर शून्य चेंजशेयर्ड () {// संदर्भ। साझा = 5;} स्थैतिक शून्य स्थानीय छाया () {// स्थानीय चर जो उसी नाम के वैश्विक को छिपाएगा। यह केवल स्थानीय चर को प्रभावित करेगा और उसी नाम के// फ़ाइल-स्कोप चर पर इसका कोई प्रभाव नहीं पड़ेगा। साझा = 1000;} स्थैतिक शून्य परमशैडो (इंट साझा) {// यह केवल पैरामीटर को प्रभावित करेगा और उसी नाम के फ़ाइल-//स्कोप चर पर इसका कोई प्रभाव नहीं पड़ेगा। साझा =-साझा;} इंट मेन () {// फ़ाइल-स्कोप चर का संदर्भ। प्रिंटएफ ("% d\n", साझा); चेंजशेयर्ड (); प्रिंटएफ ("% d\n", साझा); लोकलशेडो (); प्रिंटएफ ("% d\n", साझा); परमशेडो (1); प्रिंटएफ ("% d\n", साझा); रिटर्न 0;} चूंकि चर एक बाहरी है, इसलिए इसे मुख्य के अलावा किसी फ़ंक्शन में उपयोग करने के लिए एक पैरामीटर के रूप में पारित करने की आवश्यकता नहीं है। यह मॉड्यूल के प्रत्येक कार्य से संबंधित है। आउटपुट होगाः 3 5 5 5 जावा जावा जैसी कुछ भाषाओं में वैश्विक चर नहीं हैं। जावा में, सभी चर जो स्थानीय चर नहीं हैं, एक वर्ग के क्षेत्र हैं। इसलिए सभी चर या तो एक वर्ग या एक विधि के दायरे में हैं। जावा में, स्थिर क्षेत्र (जिसे वर्ग चर के रूप में भी जाना जाता है) वर्ग के किसी भी उदाहरण से स्वतंत्र रूप से मौजूद होते हैं और एक प्रति सभी उदाहरणों के बीच साझा की जाती है; इसलिए सार्वजनिक स्थिर क्षेत्रों का उपयोग अन्य भाषाओं में वैश्विक चर के समान कई उद्देश्यों के लिए किया जाता है क्योंकि उनके समान "साझाकरण" व्यवहार के कारणः सार्वजनिक वर्ग वैश्विक (सार्वजनिक स्थिर इंट;) PHP में एक वैश्विक मुख्य शब्द और वैश्विक चर का उपयोग करने के कई असामान्य तरीके हैं। बाहर के कार्यों के रूप में घोषित चर में फाइल का दायरा होता है (जो अधिकांश उद्देश्यों के लिए सबसे व्यापक दायरा होता है)। हालाँकि, वे कार्यों के अंदर तब तक सुलभ नहीं हैं जब तक कि वैश्विक मुख्य शब्द के साथ आयात नहीं किया जाता है (यानी, मुख्य शब्द वैश्विक चर तक पहुँचता है, यह उन्हें घोषित नहीं करता है)। हालांकि, कुछ पूर्वनिर्धारित चर, जिन्हें सुपरग्लोबल्स के रूप में जाना जाता है, हमेशा सुलभ होते हैं। वे सभी सरणी हैं। एक सामान्य उद्देश्य $GLOBALS सुपरग्लोबल है, जिसमें कार्य दायरे से बाहर परिभाषित सभी चर शामिल हैं। इसके तत्वों में परिवर्तन मूल चर को बदल देते हैं, और परिवर्धन नए चर बनाते हैं। सुपरग्लोबल्स $_ POST और $_ GET का व्यापक रूप से वेब प्रोग्रामिंग में उपयोग किया जाता है। पायथन और मैटलैब में अन्य भाषाओं को वैश्विक चर के रूप में वैश्विक मुख्य शब्द के साथ कहीं भी घोषित किया जा सकता है। रूबी के वैश्विक चर को '$' सिगिल द्वारा अलग किया जाता है। कई पूर्वनिर्धारित वैश्विक मौजूद हैं, उदाहरण के लिए $$वर्तमान प्रक्रिया आईडी है। स्थानीय चर गैर-स्थानीय चर सिंगलटन पैटर्न चर स्थैतिक चर बाहरी चर संदर्भ चर (कंप्यूटर विज्ञान) डीः परिवर्तनीय (प्रोग्रामिमियरंग) #Variablen इनर ब्लॉकस्ट्रक्टुर में देखें।