मॉड्यूल पाठ (2/2)
मूल्य और संदर्भ से गुजरें
C++ में, जब आप किसी फ़ंक्शन के लिए कोई तर्क पास करते हैं, तो इसे करने के दो मुख्य तरीके होते हैं: मूल्य के अनुसार या संदर्भ के अनुसार।
इस अंतर को समझना कार्यक्रम की शुद्धता और प्रदर्शन अनुकूलन दोनों के लिए महत्वपूर्ण है।
मूल्य से गुजरें (कॉपी करें)
डिफ़ॉल्ट रूप से, C++ मान के आधार पर तर्क पारित करता है। इसका मतलब है कि मेमोरी में डेटा की कॉपी बनाई जाती है। फ़ंक्शन के अंदर किया गया कोई भी संशोधन बाहर के मूल चर को प्रभावित नहीं करेगा:
#include <iostream>
void increment(int n) {
n++; // Modifies only the local copy
}
int main() {
int x = 5;
increment(x);
std::cout << x << std::endl; // Prints 5, x remains unchanged!
return 0;
}संदर्भ से गुजरें (&)
यदि आप चाहते हैं कि फ़ंक्शन मूल चर को संशोधित करने में सक्षम हो, या यदि आप बड़ी वस्तुओं (जैसे लंबी स्ट्रिंग या वैक्टर) की प्रतिलिपि बनाने से बचना चाहते हैं, तो आपको पास बाय रेफरेंस का उपयोग करना होगा।
पैरामीटर के प्रकार के बाद & प्रतीक जोड़कर एक संदर्भ घोषित किया जाता है:
#include <iostream>
void incrementRef(int& n) {
n++; // Modifies the original variable directly
}
int main() {
int x = 5;
incrementRef(x);
std::cout << x << std::endl; // Prints 6!
return 0;
}पैरामीटर int& n एक प्रति नहीं है, बल्कि फ़ंक्शन को कॉल करते समय पारित किए गए वेरिएबल x का एक उपनाम (प्रत्यक्ष संदर्भ) है।
खुद कोशिश करना
एक शून्य रिटर्न प्रकार के साथ डबलनंबर नामक फ़ंक्शन को परिभाषित करें जो एक पूर्णांक n (int& n का उपयोग करके) का संदर्भ लेता है और इसके मान को दोगुना कर देता है (n = n * 2)। इसे मुख्य रूप से वेरिएबल वैल को 10 से प्रारंभ करते हुए कॉल करें, फिर वैल प्रिंट करें।
संकेत दिखाएँ
फ़ंक्शन हस्ताक्षर संदर्भ को इंगित करने के लिए प्रकार के बाद `&`वर्ण का उपयोग करता है:`void DoubleNumber(int& n)`।
3 प्रयासों के बाद समाधान उपलब्ध है
स्वैप नाम के एक फ़ंक्शन को परिभाषित करें जो दो पूर्णांक संदर्भ a और b (int& a, int& b) लेता है और एक अस्थायी चर अस्थायी का उपयोग करके उनके मानों को स्वैप करता है। x और y को स्वैप करने के लिए इसे मुख्य रूप से कॉल करें और फिर उन्हें प्रिंट करें।
संकेत दिखाएँ
`int temp = a; का प्रयोग करें; ए = बी; b = temp;` मूल्यों की अदला-बदली करने के लिए।
3 प्रयासों के बाद समाधान उपलब्ध है