type qualifiers storage classes c
C ++ में टाइप क्वालिफायर और स्टोरेज क्लासेस का महत्व।
इस में विशेष C ++ प्रशिक्षण श्रृंखला , हम आगे चर के विषय का विस्तार करेंगे और इस ट्यूटोरियल में C ++ में टाइप क्वालिफायर और स्टोरेज क्लासेस देखेंगे। हालांकि यह एक छोटा विषय है, यह बहुत महत्वपूर्ण और महत्वपूर्ण है जहां तक C ++ प्रोग्रामिंग का संबंध है।
C ++ में टाइप क्वालिफायर उन वेरिएबल्स या एंटिटीज का अर्थ नहीं बदलते हैं, जिनके साथ उनका उपयोग किया जाता है, बल्कि वे केवल इकाई के लिए अतिरिक्त जानकारी जोड़ते हैं।
आप क्या सीखेंगे:
C ++ में टाइप करें क्वालीफायर
C ++ में टाइप क्वालिफ़ायर चर को अतिरिक्त गुण जोड़ते हैं जैसे चर एक स्थिर या अस्थिर होता है।
टाइप क्वालिफायर उस तरीके को व्यक्त करते हैं जिसमें एक चर एक्सेस किया जाता है या जहां चर का अर्थ या व्याख्या रखते हुए मेमोरी में एक चर संग्रहीत किया जाता है। एक तरह से, टाइप क्वालिफायर चर को अधिक परिष्कृत करते हैं।
C ++ में, वेरिएबल के प्रकार विनिर्देशक (डेटा प्रकार) से ठीक पहले टाइप क्वालिफायर निर्दिष्ट किया जाता है।
C ++ में टाइप क्वालिफायर को नीचे दिखाए अनुसार वर्गीकृत किया गया है:
# 1) कांस्टेबल
टाइप स्पेसियर 'कॉन्स्ट' टाइप कांस्ट की वस्तुओं को परिभाषित करने के लिए है। एक कॉन्स्टेंट ऑब्जेक्ट या वेरिएबल को एक बार घोषित किए जाने के बाद संशोधित नहीं किया जा सकता है। यदि कॉन्स्ट ऑब्जेक्ट या वैरिएबल को संशोधित करने का प्रयास किया जाता है, तो कंपाइलर एक त्रुटि उठाता है। हमने अपने पिछले ट्यूटोरियल में कॉन्स्टेंट / शाब्दिक के बारे में देखा है।
’कास्ट’ कीवर्ड का उपयोग करने वाले स्थिरांक की परिभाषा प्रकार। कास्ट ’से मेल खाती है।
# 2) अस्थिर
प्रकार 'क्वालिफायर' अस्थिर का मतलब है कि अस्थिर चिह्नित वैरिएबल का मान अन्य तरीकों से बदला जा सकता है जो प्रोग्राम द्वारा निर्दिष्ट नहीं हैं। चर जो अस्थिर परिवर्तन होते हैं, आमतौर पर कुछ बाहरी कारकों के कारण और कार्यक्रम के कारण जरूरी नहीं होते हैं। दूसरे शब्दों में, वे स्वभाव से अस्थिर हैं।
उदाहरण के लिए, एक चर जो एक वास्तविक शब्द में तापमान को पढ़ता है, उसे अस्थिर बनाया जा सकता है क्योंकि पढ़ने का तापमान कार्यक्रम द्वारा पूरी तरह से नियंत्रित नहीं किया जा सकता है।
# ३) परस्पर
'उत्परिवर्तनीय' प्रकार क्वालिफायर सदस्यों या चर को परिवर्तनीय बनाता है।
उत्परिवर्तनीय क्वालीफायर आमतौर पर गैर-स्थिर वर्ग के सदस्यों के लिए गैर-कॉन्स्टेबल और गैर-संदर्भ प्रकार पर लागू होता है। विशिष्ट स्थितियों के अनुसार, हमें अपरिवर्तनीय रहने के लिए कुछ चर की आवश्यकता हो सकती है (परिवर्तित नहीं की जा सकती) और कुछ चर को परिवर्तनशील बनाया जा सकता है। जब हम परिवर्तनशील विशेषताओं को चाहते हैं तो इस प्रकार का क्वालीफायर बहुत मदद करता है।
C ++ में स्टोरेज क्लासेस
अब तक, हमने सभी C ++ चर पर विस्तार से चर्चा की है। हमने देखा है कि चर को उनके संबंधित डेटा प्रकारों के साथ घोषित किया जाता है और फिर कार्यक्रम में उपयोग किया जाता है। एक चर को पूरी तरह से परिभाषित करने के लिए, हमें उनके डेटा प्रकारों के अलावा भंडारण वर्गों की भी आवश्यकता होती है।
हालाँकि हमने अब तक किसी भी संग्रहण वर्ग को चर के लिए निर्दिष्ट नहीं किया है, लेकिन एक डिफ़ॉल्ट भंडारण वर्ग 'ऑटो' था जिसे सभी चर पर लागू किया गया था।
तो भंडारण कक्षाएं क्या हैं?
भंडारण कक्षाएं निर्दिष्ट करती हैं कि कंपाइलर द्वारा चर या फ़ंक्शन का इलाज कैसे किया जाता है और एक चर के लिए भंडारण कैसे आवंटित किया जाता है। यह एक चर की दृश्यता या गुंजाइश और जीवनकाल को परिभाषित करता है। चर का एक जीवनकाल कितनी देर तक चर सक्रिय रहने वाला है।
वैरिएबल की दृश्यता या कार्यक्षेत्र वह होता है, जिसके लिए वैरिएबल कार्य या मॉड्यूल सुलभ होगा। ये संग्रहण वर्ग डेटा प्रकार के चर से पहले निर्दिष्ट किए जाते हैं।
C ++ में, हमारे पास निम्न संग्रहण कक्षाएं हैं:
(1) ऑटो स्टोरेज क्लास
यह डिफ़ॉल्ट भंडारण वर्ग है। भंडारण वर्ग 'ऑटो' स्थानीय चर पर लागू होता है और स्वचालित रूप से स्थानीय चर के लिए संकलक द्वारा सौंपा जाता है। ’ऑटो’ कीवर्ड से पहले के स्थानीय चर उस फ़ंक्शन में सक्रिय रहते हैं जिसमें वे घोषित किए जाते हैं और फ़ंक्शन से बाहर निकलते ही स्कोप से बाहर हो जाते हैं।
यदि 'ऑटो' स्टोरेज क्लास वाले वैरिएबल को इनिशियलाइज़ नहीं किया जाता है या उन्हें कोई मूल्य नहीं दिया जाता है, तो उनके पास कचरा या अपरिभाषित मूल्य होते हैं।
आइए हम C ++ प्रोग्राम में ऑटो चर का एक उदाहरण देखते हैं।
#include using namespace std; int main() { int i; float f; cout<<'Variable i = '< जैसा कि हमने उनके लिए कोई मान निर्दिष्ट नहीं किया है, जब हम इन चरों को प्रिंट करते हैं, तो हम देखते हैं कि दोनों में मान हैं। ।
ध्यान दें: C ++ 11 से शुरू होकर, ऑटो कीवर्ड का उपयोग किया जाता है प्रकार का अनुमान । इसका मतलब यह है कि हम ऑटो i = 10 जैसे कोड का उपयोग कर सकते हैं और I के लिए उपयोग किए गए इनिशियलाइज़र से I का डेटा प्रकार सीधे अनुमान लगाया जाएगा। इसलिए, अगर हम flo ऑटो फ्लोट f; ’जैसा कुछ घोषित करते हैं, तो संकलक एक त्रुटि दिखाने वाला है।
इसलिए, हम आमतौर पर भंडारण वर्ग ऑटो के लिए घोषणा का उपयोग नहीं करते हैं क्योंकि यह निहित है कि डिफ़ॉल्ट हमेशा ऑटो भंडारण वर्ग होगा।
# 2) स्टोरेज क्लास रजिस्टर करें
जब हमारे पास एक आवश्यकता होती है कि एक चर तेजी से पहुंच की आवश्यकता होती है, तो हम रजिस्टर स्टोरेज क्लास का उपयोग करते हैं। इसलिए रैंडम एक्सेस मेमोरी (RAM) में वेरिएबल्स को स्टोर करने के बजाय, इन वेरिएबल्स को CPU रजिस्टर में स्टोर किया जाता है और इनका आकार रजिस्टर के बराबर होता है।
इसके अतिरिक्त, चूंकि इन चरों में मेमोरी स्थान नहीं है, इसलिए हम इन चरों के साथ these & 'ऑपरेटर का उपयोग नहीं कर सकते हैं।
रजिस्टर भंडारण वर्ग के साथ एक चर होने की गारंटी नहीं है कि चर हमेशा रजिस्टर में संग्रहीत किया जाएगा। इसके बजाय, यह मानता है कि चर को एक रजिस्टर में संग्रहीत किया जा सकता है और पूरी तरह से हार्डवेयर और कार्यान्वयन पर निर्भर है।
रजिस्टर चर में ऑटो चर के समान गुंजाइश और जीवनकाल होता है।
उदाहरण के लिए,
#include using namespace std; int main() { int i; register float f; cout<<'Variable i = '< # 3) एक्सटर्नल स्टोरेज क्लास बाहरी संग्रहण वर्ग की आवश्यकता तब होती है जब चर को कई फ़ाइलों में साझा किया जाना चाहिए। बाहरी चर में वैश्विक गुंजाइश होती है और ये चर उस फ़ाइल के बाहर दिखाई देते हैं जिसमें वे घोषित किए जाते हैं।
जैसा कि बाहरी चर वे चर हैं जो किसी अन्य फ़ाइल में बाहर घोषित किए गए हैं और परिभाषित किए गए हैं।
बाहरी चर में वैश्विक गुंजाइश होती है और बाहरी चर का जीवनकाल उस कार्यक्रम के रूप में लंबा होता है, जिसमें इसे समाप्त घोषित किया जाता है।
बाहरी चर को निम्नानुसार घोषित किया जा सकता है:
extern int temp; int temp;
उपर्युक्त उदाहरण में, हमारे पास एक ही नाम के साथ दो चर घोषणाएं हैं, लेकिन पहला एक बाहरी चर है जो कहीं और परिभाषित किया गया है। यह एक्सटर्नल वैरिएबल तब उपयोगी होगा जब हम उस सोर्स फाइल को शामिल करेंगे जिसमें हमारे प्रोग्राम में एक्सटर्नल वैरिएबल टेम्प को परिभाषित किया गया है।
# 4) स्टेटिक स्टोरेज क्लास
स्टेटिक स्टोरेज क्लास प्रोग्रामर के पूरे जीवनकाल में वैरिएबल के मूल्य को बनाए रखने के लिए कंपाइलर को बताता है। स्थैतिक चर स्थानीय चरों के समान होते हैं, लेकिन keyword स्थैतिक ’कीवर्ड से पहले होते हैं।
फ़ंक्शन के बाहर निकलने के बाद स्कोप के बाहर जाने वाले लोकल वैरिएबल के विपरीत, जब कोई फंक्शन या ब्लॉक बाहर निकलता है तो स्टैटिक वैरिएबल स्कोप से बाहर नहीं जाते हैं और फंक्शन कॉल्स के बीच उनके वैल्यूज़ सुरक्षित रहते हैं।
स्टेटिक वैरिएबल्स को इनिशियलाइज़ किया जाता है और स्टोरेज उन्हें एक प्रोग्राम के जीवनकाल में केवल एक बार आवंटित किया जाता है। घोषणा के दौरान पहले से ही आरंभिक नहीं होने पर स्टेटिक वैरिएबल को 0 से प्रारंभ किया जाता है।
हमें स्टेटिक स्टोरेज क्लास को बेहतर ढंग से समझने के लिए निम्न उदाहरण देखें।
#include using namespace std; void printvar() { static int var; var++; cout<<'static variable var = '< आउटपुट:
प्रिंटवर कॉल 1: स्टैटिक वेरिएबल वेरिएंट = 1
प्रिंटवर कॉल 2: स्टैटिक वेरिएबल वेरिएंट = 2
प्रिंटवार कॉल 3: स्टैटिक वेरिएबल var = 3
प्रिंटवर कॉल 4: स्टैटिक वेरिएबल वेरिएंट = 4
उपरोक्त कोड में, हमारे पास एक फ़ंक्शन above प्रिंटवर ’है जिसमें हमने एक स्थिर वैरिएबल प्रकार के प्रकार को घोषित किया है। हम फिर इस चर को बढ़ाते हैं और इसे प्रिंट करते हैं। मुख्य कार्य में, हम प्रिंटवार फ़ंक्शन को चार बार कहते हैं।
अब आउटपुट की जांच करें। आउटपुट से पता चलता है कि प्रत्येक फ़ंक्शन कॉल के साथ स्टेटिक वैरिएबल वैर को उसके पिछले मूल्य से 1 से बढ़ा दिया जाता है। यह स्टैटिक स्टोरेज क्लास है जो वेरिएबल को फंक्शन कॉल्स के बीच अपनी वैल्यू बनाए रखने में मदद करता है। स्थिर चर हर फ़ंक्शन कॉल के लिए पुनर्निमित नहीं है।
हमें यह भी ध्यान रखना चाहिए कि प्रिंटवर फ़ंक्शन में, हमने केवल स्टैटिक वेरिएबल घोषित किया है और इसे इनिशियलाइज़ नहीं किया है। यह उल्लेखनीय है कि जब हम स्थिर वैरिएबल को इनिशियलाइज़ नहीं करते हैं तो उन्हें प्रारंभिक मान 0 के साथ सौंपा जाता है।
ध्यान दें: स्थैतिक भंडारण वर्ग को वैश्विक चर पर भी लागू किया जा सकता है। इस स्थिति में, वैरिएबल में वैश्विक स्कोप और अतिरिक्त रूप से स्थिर भंडारण होगा।
# 5) Mutable Storage Class
उत्परिवर्तनीय भंडारण वर्ग केवल कक्षा वस्तुओं पर लागू होता है। उत्परिवर्तनीय भंडारण वर्ग को लागू करने से, किसी वस्तु का सदस्य member कास्ट ’के सदस्य फ़ंक्शन को ओवरराइड कर सकता है। इसका मतलब है कि एक परिवर्तनशील सदस्य या वस्तु को एक सदस्य फ़ंक्शन द्वारा संशोधित किया जा सकता है जो 'कास्ट' है।
जब हम C ++ में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के बारे में सीखते हैं, तो हम अपने बाद के ट्यूटोरियल्स में कॉस्ट फ़ंक्शंस और ऑब्जेक्ट्स के साथ-साथ परस्पर सदस्यों के बारे में अधिक जानेंगे।
निष्कर्ष
यह C ++ में सभी प्रकार के विनिर्देशक और भंडारण वर्ग के बारे में है। हमें उम्मीद है कि हम इस ट्यूटोरियल के माध्यम से स्टोरेज क्लासेस और टाइप स्पेसर्स के बारे में सभी अवधारणाओं को स्पष्ट करने में सक्षम थे।
html और css पर साक्षात्कार प्रश्न
हमारे आगामी ट्यूटोरियल में, हम C ++ में उपयोग किए जाने वाले विभिन्न ऑपरेटरों के साथ-साथ उनके उपयोग के बारे में अधिक जानेंगे।
=> पूर्ण सी ++ प्रशिक्षण श्रृंखला यहां देखें
अनुशंसित पाठ
- C ++ में चर
- अजगर चर
- उदाहरण के साथ जावा इंटरफेस और एब्सट्रैक्ट क्लास ट्यूटोरियल
- C ++ में रूपांतरण टाइप करें
- VBScript चर: कैसे घोषित करने और उपयोग करने के लिए चर - VBScript मंद
- JMeter चर और कार्य
- 10 सर्वश्रेष्ठ मुफ्त मेघ संग्रहण प्रदाता (ऑनलाइन संग्रहण 2021)
- प्रवासन परीक्षण के प्रकार: प्रत्येक प्रकार के लिए परीक्षण परिदृश्यों के साथ