references c
C ++ में सन्दर्भ घोषित करने और उपयोग करने के तरीके जानने के लिए।
C ++ प्रोग्रामिंग भाषा में संदर्भ एक प्रमुख अवधारणा है। हालाँकि यह संकेत के रूप में मजबूत नहीं है, फिर भी यह हमें कुशल कार्यक्रमों को लिखने के लिए इसका उपयोग करने की अनुमति देता है। संदर्भ चर का प्रमुख उपयोग कार्यों के मापदंडों को पारित करने में है।
लोकप्रिय 'संदर्भ के माध्यम से पास' पैरामीटर पासिंग तकनीक संदर्भों का उपयोग करती है। इस ट्यूटोरियल में, हम देखेंगे कि एक संदर्भ क्या है, और इसे कैसे घोषित करें और कैसे उपयोग करें। हम बिंदुओं और संदर्भों के बीच अंतर के साथ-साथ कार्यों से / के संदर्भ को पारित करने और वापस करने पर भी चर्चा करेंगे।
=> पूर्ण सी ++ ट्यूटोरियल सूची देखने के लिए यहां देखें।
आप क्या सीखेंगे:
- एक संदर्भ क्या है?
- संदर्भ चर घोषित करना
- संदर्भ बनाम संकेत
- कार्य करने के लिए संदर्भ पारित करना
- लौटते हुए सन्दर्भ
- निष्कर्ष
- अनुशंसित पाठ
एक संदर्भ क्या है?
संदर्भ एक चर के लिए एक उपनाम या दूसरा नाम है। एक पहचानकर्ता के साथ एक चर को देखते हुए, हम इस चर को एक और पहचानकर्ता प्रदान कर सकते हैं ताकि हम इस चर को उसके मूल नाम या किसी अन्य नाम के साथ संदर्भित कर सकें। यह 'एक और नाम' है जिसे संदर्भ के रूप में कहा जाता है।
विचार करें कि हमारे पास मान 17 के साथ एक चर ’i 'है। यदि j एक संदर्भ है, तो चर i और संदर्भ j की मेमोरी प्रतिनिधित्व नीचे दिखाया गया है।
जैसा कि उपरोक्त आंकड़े में दिखाया गया है, एक चर और यह उर्फ यानी एक ही मूल्य का संदर्भ बिंदु है।
संदर्भ चर घोषित करना
एक संदर्भ को can & 'ऑपरेटर के उपयोग से घोषित किया जा सकता है।
संदर्भ की घोषणा नीचे दी गई है।
int a = 10; int& refvar = a;
इसलिए उपरोक्त कोड में, हमने मान के साथ एक पूर्णांक चर की घोषणा की है। फिर हम एक और चर को घोषित करते हैं और इसे एक चर प्रदान करते हैं। ध्यान दें कि Refvar की घोषणा करते समय, हमने वेरिएबल नाम से ठीक पहले और ऑपरेटर का उपयोग किया है। यह दर्शाता है कि रिफावर पहले से मौजूद वैरिएबल का संदर्भ है।
हम चर का उल्लेख 'a' या तो चर नाम का उपयोग करके कर सकते हैं या संदर्भ नाम 'refvar' का उपयोग कर सकते हैं।
c साक्षात्कार के सवालों के जवाब पीडीऍफ़ के साथ
नीचे दिए गए संदर्भ का एक सरल उदाहरण है:
#include #include using namespace std; int main() { int age = 22; int& numYears = age; double salary = 10000.00; double& wages = salary; cout<<'Age: '< आउटपुट:
आयु: २२
संख्या: 22
वेतन: 10000
मजदूरी: 10000
उपरोक्त कोड में, हमारे पास एक पूर्णांक चर आयु है। अगला, हम एक संदर्भ पूर्णांक चर संख्या के रूप में घोषित करते हैं। हमारे पास टाइप डबल का एक और परिवर्तनशील वेतन है। अगला, हम चर वेतन के लिए एक डबल संदर्भ चर मजदूरी की घोषणा करते हैं।
इसके बाद, हम चर, पहली आयु को प्रिंट करते हैं, फिर इसका संदर्भ वेतन और उसके संदर्भ के बाद आता है। यदि हम प्रोग्राम के आउटपुट की जांच करते हैं, तो हम समझते हैं कि चर और इसका संदर्भ एक ही मूल्य की ओर इशारा करता है और इसलिए आयु और संख्या, साथ ही वेतन और मजदूरी के समान मूल्य हैं।
संदर्भ बनाम संकेत
जब संकेत की तुलना में, संदर्भ सुरक्षित और उपयोग करने में आसान होते हैं।
हम संकेत और संदर्भ के बीच कुछ अंतरों पर चर्चा करेंगे:
- संकेत के विपरीत, संदर्भों का एक अशक्त मूल्य नहीं हो सकता। संदर्भों के लिए यह आवश्यक है कि इसे एक मान दिया जाए।
- संदर्भों को उसी क्षण आरम्भ किया जाता है जब वे बनाए जाते हैं। इसके विपरीत, पॉइंटर्स को किसी भी समय आरंभीकृत किया जा सकता है और घोषणा के दौरान जरूरी नहीं।
- कम से कम मूल्यों को फिर से संकेत दिया जा सकता है। लेकिन संदर्भों के साथ, हम ऐसा नहीं कर सकते। एक बार वेरिएबल का मान असाइन किए जाने के बाद, यानी एक बार वेरिएबल का एक अन्य नाम बन जाने के बाद, हम इस संदर्भ में दूसरे वेरिएबल को असाइन नहीं कर सकते।
- हमारे पास शून्य संदर्भ नहीं हैं। परिभाषा के अनुसार, एक संदर्भ चर के लिए एक उपनाम है और इसे स्वयं रचना के दौरान आरंभीकृत किया जाता है। इस प्रकार, ऐसा कोई मौका नहीं है कि हमारे पास शून्य संदर्भ होगा और बाद में एक ठोस डेटा प्रकार के साथ एक चर असाइन करना होगा। इसके विपरीत, हमारे पास शून्य बिंदु हो सकते हैं।
ऊपर चर्चा की गई इन सीमाओं के कारण, C ++ में संदर्भों को लिंक की गई सूची की तरह डेटा संरचनाओं के साथ उपयोग नहीं किया जा सकता है। कृपया ध्यान दें कि जावा में, हमारे पास संदर्भों पर इन सभी प्रतिबंधों या सीमाएं नहीं हैं।
कार्य करने के लिए संदर्भ पारित करना
फ़ंक्शंस पर हमारे पिछले ट्यूटोरियल्स में, हमने पहले ही 'रेफ़र' पैरामीटर तकनीक के बारे में चर्चा कर ली है और हमने इस तकनीक का उपयोग करके दो नंबरों के उदाहरण की अदला-बदली देखी है। हम इस खंड में इस तकनीक की व्याख्या को छोड़ देते हैं और केवल एक उदाहरण के रूप में एक बार फिर से एक स्वैप कार्य प्रस्तुत करते हैं।
लेकिन इस बार नंबर स्वैप करने के बजाय हम दो तार स्वैप करने जा रहे हैं।
#include #include using namespace std; void swap(char * &str1, char * &str2) { char *temp = str1; str1 = str2; str2 = temp; } int main() { char *str1 = 'references'; char *str2 = 'pointers'; cout<<'str1 = '< आउटपुट:
str1 = संदर्भ str2 = संकेत
स्वैप के बाद…।
str1 = संकेत str2 = संदर्भ
इसलिए इस प्रोग्राम में, हम स्ट्रैप (चार *) को स्वैप फंक्शन में पास करते हैं। औपचारिक पैरामीटर दो प्रकार के चर के संदर्भ हैं *। हम ध्यान दें कि जब दो मानों की अदला-बदली की जाती है, तो उनका संशोधन कॉलिंग फ़ंक्शन में परिलक्षित होता है क्योंकि हम मापदंडों के लिए संदर्भ / उपनाम का उपयोग कर रहे हैं।
लौटते हुए सन्दर्भ
जैसे फ़ंक्शंस से लौटने वाले पॉइंटर्स, हम फ़ंक्शंस से रेफ़रेंस भी लौटा सकते हैं। किसी फ़ंक्शन से संदर्भ लौटना भी रिटर्न मान के लिए एक अंतर्निहित सूचक लौटाता है। इस कारण से, एक संदर्भ लौटाने वाले फ़ंक्शन का उपयोग असाइनमेंट के बाईं ओर किया जा सकता है।
आइए एक फ़ंक्शन से एक संदर्भ वापस करने का एक उदाहरण दें।
#include using namespace std; int myarray() = {1, 0, 2, 3, 5}; int& setValues( int i ) //returns reference to the array { return myarray(i); } int main () { cout << 'myarray before change' << endl; for ( int i = 0; i < 5; i++ ) { cout << 'myarray(' << i << ') = '; cout << myarray(i) << endl; } setValues(1) = 1; setValues(3) = 8; cout << 'Value after change' << endl; for (int i = 0; i < 5; i++ ) { cout<< 'myarray(' << i << ') = '; cout << myarray(i) << endl; } return 0; }
आउटपुट:
परिवर्तन से पहले मायार्रे
मायार्रे (को ०) = १
मायार्रे (१) = ०
मायार्रे (२) = २
मायार्रे (३) = ३
मायार्रे (४) = ५
परिवर्तन के बाद मूल्य
मायार्रे (को ०) = १
मायार्रे (१) = १
मायार्रे (२) = २
मायार्रे (३) =)
मायार्रे (४) = ५
उसी के लिए स्क्रीनशॉट नीचे दिखाया गया है:

जैसा कि ऊपर दिए गए कोड में देखा गया है, हम एक फंक्शन सेटवैल्यूज़ को परिभाषित करते हैं जो एक संदर्भ और एक पैरामीटर जो एक पूर्णांक होता है। फ़ंक्शन के अंदर, हम केवल सरणी संदर्भ को C ++ में स्थिति I पर लौटाते हैं।
मुख्य फ़ंक्शन में, हम ऐरे के मानों को प्रिंट करते हैं। फिर setValues फ़ंक्शन का उपयोग करके, हम सरणी में दो तत्वों के मूल्यों को बदलते हैं। फिर से हम एरे के मान को प्रिंट करते हैं।
एक बात जो हमें संदर्भों के साथ ध्यान रखनी चाहिए, वह यह है कि हम एक फ़ंक्शन को केवल एक संदर्भ वापस कर सकते हैं जब डेटा या तो स्थिर या वैश्विक हो। C ++ में स्थानीय चर का संदर्भ वापस करना अवैध है।
कैसे ग्रहण में जावा परियोजना का निर्माण करने के लिए
निष्कर्ष
पाठकों को ध्यान देना चाहिए कि संदर्भ का मुख्य उपयोग मापदंडों को कार्य करने के लिए है।
आगामी ट्यूटोरियल्स में, हम C ++ में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग पर जाने से पहले C ++ में लैम्ब्डा फंक्शन्स / एक्सप्रेशन को कवर करेंगे।
=> यहां सर्वश्रेष्ठ C ++ प्रशिक्षण ट्यूटोरियल देखें।
अनुशंसित पाठ
- सर्वश्रेष्ठ मुफ्त सी # ट्यूटोरियल श्रृंखला: शुरुआती के लिए अंतिम सी # गाइड
- पॉइंटर्स और पॉइंटर ऑपरेशन C ++ में
- एचपी लोडरनर ट्यूटोरियल के साथ लोड परीक्षण
- C ++ में चर
- C ++ में ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग
- यूनिक्स पाइप्स ट्यूटोरियल: यूनिक्स प्रोग्रामिंग में पाइप्स
- पुस्तकालय कार्य C ++ में
- मुफ़्त के लिए C ++ प्रोग्रामिंग सीखने के लिए 70+ BEST C ++ ट्यूटोरियल