जब कोई वैरिएबल स्टोरेज क्लास विनिर्देशक के बारे में बात करता है, तो वे किस बारे में बात कर रहे हैं?
वे अक्सर एक ही संदर्भ में परिवर्तनीय संबंध के बारे में बात करते हैं, वह क्या है?एक चर के लिंक और भंडारण विनिर्देशक क्या है?
उत्तर
भंडारण वर्ग विनिर्देशक भंडारण और अपने चर के लिंकेज नियंत्रित करता है। ये दो अवधारणाएं हैं जो अलग हैं। सी चर के लिए निम्नलिखित विनिर्देश निर्दिष्ट करता है: ऑटो, बाहरी, रजिस्टर, स्थैतिक।
भंडारण
भंडारण अवधि निर्धारित करता है कितनी देर तक अपने चर राम में रहते हैं।
भंडारण अवधि के तीन प्रकार हैं: स्थैतिक, स्वचालित और गतिशील।
स्थिर
अपने चर फ़ाइल गुंजाइश पर घोषित कर दिया जाता है, तो या एक निर्वासन या स्थिर विनिर्देशक के साथ, यह स्थिर संग्रहण होगा। जब तक प्रोग्राम निष्पादित हो रहा है तब तक वेरिएबल मौजूद रहेगा। इन चर बनाने के लिए कोई निष्पादन समय नहीं बिताया जाता है।
स्वचालित
चर एक समारोह में घोषित किया जाता है, लेकिन बिना निर्वासन या स्थिर विनिर्देशक है, यह स्वत: भंडारण है। चर केवल तभी मौजूद होगा जब आप फ़ंक्शन निष्पादित कर रहे हों। एक बार लौटने के बाद, चर मौजूद नहीं है। स्वचालित भंडारण आमतौर पर ढेर पर किया जाता है। इन चरों को बनाने के लिए यह एक बहुत तेज़ ऑपरेशन है (आकार के आधार पर स्टैक पॉइंटर को बढ़ाएं)।
गतिशील
आप (सी में या नए ++) malloc का उपयोग करते हैं आप गतिशील भंडारण का उपयोग कर रहे हैं। यह संग्रहण तब तक अस्तित्व में रहेगा जब तक कि आप निशुल्क कॉल न करें (या हटाएं)। स्टोरेज बनाने का यह सबसे महंगा तरीका है, क्योंकि सिस्टम को आवंटन और गतिशीलता को गतिशील रूप से प्रबंधित करना होगा।
लिंकेज
लिंकेज निर्दिष्ट करता है जो देख सकते हैं और चर संदर्भित कर सकते हैं। तीन प्रकार के संबंध हैं: आंतरिक संबंध, बाहरी संबंध और कोई संबंध नहीं।
कोई लिंक
यह चर केवल यह दिखाई देता है जहां इसे घोषित किया गया था। आमतौर पर फ़ंक्शन में घोषित चर पर लागू होता है।
आंतरिक संबंध
यह चर फ़ाइल (एक translation unit कहा जाता है) के भीतर सभी कार्यों को दिखाई देगी,, लेकिन अन्य फ़ाइलों को पता नहीं चलेगा कि यह मौजूद है।
बाहरी लिंक
परिवर्तनीय अन्य अनुवाद इकाइयों के लिए दृश्यमान होगा। इन्हें अक्सर "वैश्विक चर" के रूप में माना जाता है।
यहाँ विनिर्देशक
Storage Class Function File Specifier Scope Scope ----------------------------------------------------- none automatic static no linkage external linkage extern static static external linkage external linkage static static static no linkage internal linkage auto automatic invalid no linkage register automatic invalid no linkage
चर भंडारण वर्ग या प्रकार विनिर्देशक के आधार पर भंडारण और लिंकेज विशेषताओं को परिभाषित कैसे/जहां चर प्रोग्राम निष्पादन के दौरान सहेजे गए हैं (वाष्पशील, ऑटो और स्थिर की तरह) का वर्णन एक टेबल है। उदाहरण के लिए, फ़ंक्शंस में परिभाषित चर आमतौर पर स्टैक पर सहेजे जाते हैं, जिसका अर्थ यह है कि फ़ंक्शन रिटर्न के बाद यह खो जाएगा। "स्थिर" कीवर्ड का उपयोग करके, आप संकलक को डेटा सेगमेंट में वैरिएबल को मेमोरी में रखने के लिए मजबूर कर सकते हैं, जिससे उस फ़ंक्शन पर कॉल के बीच चर सामग्री लगातार बनायी जा सके। "रजिस्टर" कीवर्ड संकलक को सीपीयू रजिस्टर में वैरिएबल डालने के लिए यथासंभव कठिन प्रयास करने का कारण बनता है, काउंटर में काउंटर के लिए उपयोगी आदि। हालांकि, यह गारंटी नहीं है कि यह वास्तव में एक रजिस्टर में है।
टाइप विनिर्देशों here के बारे में और पढ़ें।
"जितना संभव हो उतना कठिन प्रयास करें" की एक अजीब परिभाषा के लिए जिसका अर्थ है "कुछ भी नहीं करें"। दस्तावेज (प्रवर्तन द्वारा) को छोड़कर 'रजिस्टर' पूरी तरह से अप्रचलित है कि आपके कोड को चर के पते को लेने की अनुमति नहीं है। –
- 1. बेकार वर्ग भंडारण विनिर्देशक
- 2. एक स्थानीय चर आवंटित भंडारण क्या सटीक पल पर है?
- 3. भंडारण स्थिरांक चर
- 4. वैश्विक चर के लिए डिफ़ॉल्ट भंडारण वर्ग क्या है?
- 5. स्थानीय भंडारण और सत्र भंडारण
- 6. PostgreSQL: भंडारण और एक विशाल ग्राफ
- 7. विनिर्देशक और योग्यता के बीच सहसंबंध?
- 8. % * s प्रारूप विनिर्देशक का क्या अर्थ है?
- 9. NodeJS एक्सप्रेस req.session भंडारण नहीं मेरी चर
- 10. एक चर प्रारंभ करना और भंडारण पते को एक ही समय निर्दिष्ट करना: क्या यह संभव है?
- 11. हस्ताक्षरित शॉर्ट इंट के लिए प्रारूप विनिर्देशक क्या है?
- 12. एक ब्लॉक के अंदर एक चर के अंदर एक चर के अंदर एक वैरिएबल असाइन करें
- 13. सदस्य चर और स्थानीय चर के बीच क्या अंतर है?
- 14. अपलोड और भंडारण छवियों
- 15. स्थिर चर लिंक त्रुटि
- 16. स्थानीय भंडारण और JSON
- 17. पता तुलना और स्ट्रिंग भंडारण
- 18. जीडीबी चर में खोल के आउटपुट को पुनर्निर्देशित/भंडारण?
- 19. एक और HashMap अंदर एक HashMap भंडारण और प्रदर्शन
- 20. एक आवृत्ति चर क्या है?
- 21. एक स्थिर चर के लिए बाहरी लिंक क्यों नहीं होगा?
- 22. _11 एटमिक प्रकार विनिर्देशक और क्वालीफायर
- 23. मैटलैब: चर, नहीं चर मूल्य के लिए लिंक
- 24. डाउनलोड और एक लिंक
- 25. एक शब्दकोश में स्याही भंडारण
- 26. विभिन्न कॉन्स/स्थिर चर के लिंक
- 27. स्वरूप विनिर्देशक लंबे अहस्ताक्षरित int
- 28. हारने फेंक विनिर्देशक सी ++
- 29. एनएसएलओजी/प्रिंटएफ विनिर्देशक?
- 30. सुरक्षित पहुंच विनिर्देशक
शायद अनुवाद इकाइयों पर अतिरिक्त विवरण शामिल होना चाहिए क्योंकि वे केवल फाइल नहीं हैं ... वे स्रोत फाइलें हैं और उनमें से कोई भी शीर्षलेख शामिल है (हालांकि अप्रत्यक्ष रूप से) – workmad3
वाह ... +1। ध्यान दें कि "ऑटो" इसका अर्थ सी ++ 0x के साथ बदल देगा: http://en.wikipedia.org/wiki/C%2B%2B0x – paercebal
सी ++ 11: थ्रेड स्टोरेज अवधि के लिए अद्यतन। थ्रेड समाप्त होने पर धागा शुरू होता है और हटा दिया जाता है जब ऑब्जेक्ट आवंटित किया जाता है। प्रत्येक धागे का ऑब्जेक्ट का अपना उदाहरण होता है। थ्रेड_लोकल घोषित केवल ऑब्जेक्ट्स में यह स्टोरेज अवधि है। thread_local लिंक समायोजित करने के लिए स्थिर या बाहरी के साथ एक साथ दिखाई दे सकता है। – czxyl