कार्य
एक ऐसी प्रक्रिया लिखें जो दो वेरिएबल्स के मानों की अदला-बदली करे।
इस कार्य की ख़ासियत यह है कि हमें कॉलिंग प्रोग्राम के बारे में जानने के लिए प्रक्रिया में किए गए परिवर्तनों की आवश्यकता है।
आइए प्रक्रिया को इस तरह लिखने का प्रयास करें:
शून्य स्वैप (इंट ए, इंट बी) // प्रक्रिया मापदंडों के इस तरह के विवरण के साथ,
{ // तर्कों के मान (x और y) कॉपी किए जाएंगे,
इंट सी; // चर ए और बी स्वतंत्र चर हैं जो एक्स और वाई से संबंधित नहीं हैं
सी = ए; ए = बी; बी = सी;
}
मुख्य()
{
int x=1, y=2;
स्वैप (एक्स, वाई); // चर x और y (तर्क) के मान पैरामीटर a और b में कॉपी किए गए हैं
cout << "एक्स=" << एक्स&एलटी;&एलटी; ", य=" << वाई; // एक्स = 1, वाई = 2
}
पूर्व>
यदि आप इस प्रोग्राम को चलाते हैं, तो आप देख सकते हैं कि वेरिएबल्स x
और y
के मान नहीं बदले हैं। मापदंडों के लिए तर्कों के मूल्यों को बदलने के लिए, आपको संदर्भ द्वारा डेटा पास करना चाहिए। ऐसा करने के लिए, डेटा प्रकार के नाम के बाद उपनेमका के शीर्षक में, आपको & code> ("ampersand") चिन्ह लगाना होगा।
शून्य स्वैप ( int & a, int & b) // अब वेरिएबल्स a और b को मेमोरी में वेरिएबल्स x और y के एड्रेस मिलते हैं
{
इंट सी;
सी = ए; ए = बी; बी = सी;
}
पूर्व>
उपयोग: यदि आप संदर्भ द्वारा तर्क पारित करते हैं, तो प्रक्रिया को कॉल करते समय केवल चर नाम (संख्या नहीं और अंकगणितीय अभिव्यक्ति नहीं) इस स्थान पर हो सकता है!< बीआर />
इस तरह की प्रक्रिया को कॉल न करें:
स्वैप (x, 4);
स्वैप (5+x, y);
पूर्व>