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