C++ में हम अलग-अलग तरीकों से फंक्शन में आर्ग्युमेंट्स पास कर सकते हैं। ये अलग-अलग तरीके हैं -
- कॉल बाय वैल्यू
- संदर्भ द्वारा कॉल करें
- पते से कॉल करें
कभी-कभी पते से कॉल को संदर्भ द्वारा कॉल के रूप में संदर्भित किया जाता है, लेकिन वे C++ में भिन्न होते हैं। कॉल बाय एड्रेस में, हम सटीक मेमोरी एड्रेस भेजने के लिए पॉइंटर वेरिएबल्स का उपयोग करते हैं, लेकिन कॉल बाय रेफरेंस में हम रेफरेंस वेरिएबल (उस वेरिएबल का उपनाम) पास करते हैं। यह सुविधा C में मौजूद नहीं है, वहां हमें उस प्रभाव को प्राप्त करने के लिए पॉइंटर पास करना होगा। इस खंड में हम देखेंगे कि मूल्य के आधार पर कॉल के संदर्भ में कॉल के क्या फायदे हैं, और उनका उपयोग कहां करना है
कॉल बाय वैल्यू
कॉल बाय वैल्यू में, वास्तविक मान जो तर्क के रूप में पारित किया जाता है, उस पर कुछ ऑपरेशन करने के बाद नहीं बदला जाता है। जब कॉल बाय वैल्यू का उपयोग किया जाता है, तो यह उस वैरिएबल की एक कॉपी मेमोरी में स्टैक सेक्शन में बनाता है। जब मूल्य बदल जाता है, तो यह उस प्रतिलिपि के मूल्य को बदल देता है, वास्तविक मूल्य वही रहता है।
उदाहरण कोड
#include<iostream> using namespace std; void my_function(int x) { x = 50; cout << "Value of x from my_function: " << x << endl; } main() { int x = 10; my_function(x); cout << "Value of x from main function: " << x; }
आउटपुट
Value of x from my_function: 50 Value of x from main function: 10
संदर्भ द्वारा कॉल करें
संदर्भ द्वारा कॉल में वास्तविक मान जो तर्क के रूप में पारित किया जाता है, उस पर कुछ ऑपरेशन करने के बाद बदल दिया जाता है। जब संदर्भ द्वारा कॉल का उपयोग किया जाता है, तो यह उस चर के संदर्भ की एक प्रति स्मृति में स्टैक अनुभाग में बनाता है। मूल्य प्राप्त करने के लिए संदर्भ का उपयोग करता है। इसलिए जब संदर्भ का उपयोग करके मान को बदला जाता है तो यह वास्तविक चर के मान को बदल देता है।
उदाहरण कोड
#include<iostream> using namespace std; void my_function(int &x) { x = 50; cout << "Value of x from my_function: " << x << endl; } main() { int x = 10; my_function(x); cout << "Value of x from main function: " << x; }
आउटपुट
Value of x from my_function: 50 Value of x from main function: 50
संदर्भ द्वारा कॉल का उपयोग कहां करें?
-
कॉल बाय रेफरेंस का उपयोग मुख्य रूप से तब किया जाता है जब हम पारित तर्क के मान को इनवॉकर फ़ंक्शन में बदलना चाहते हैं।
-
एक फ़ंक्शन केवल एक मान लौटा सकता है। जब हमें किसी फ़ंक्शन से एक से अधिक मान की आवश्यकता होती है, तो हम उन्हें इस तरह से आउटपुट तर्क के रूप में पास कर सकते हैं।