Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में पास बाय वैल्यू और पास बाय रेफरेंस के बीच अंतर

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

संदर्भ द्वारा कॉल का उपयोग कहां करें?

  • कॉल बाय रेफरेंस का उपयोग मुख्य रूप से तब किया जाता है जब हम पारित तर्क के मान को इनवॉकर फ़ंक्शन में बदलना चाहते हैं।

  • एक फ़ंक्शन केवल एक मान लौटा सकता है। जब हमें किसी फ़ंक्शन से एक से अधिक मान की आवश्यकता होती है, तो हम उन्हें इस तरह से आउटपुट तर्क के रूप में पास कर सकते हैं।


  1. PHP में पास बाय रेफरेंस और पास बाय वैल्यू क्या है?

    इस लेख में, हम PHP में पास बाय वैल्यू और पास बाय रेफरेंस के बारे में जानेंगे। आइए, इन दो अवधारणाओं को विस्तार से समझते हैं। PHP में आम तौर पर, हमने फ़ंक्शन को पास किए गए मान दृष्टिकोण के साथ तर्कों को पारित करने के लिए अनुसरण किया। हम इस अभ्यास का पालन कर रहे हैं क्योंकि यदि फ़ंक्शन के भीतर तर्क

  1. सी ++ और सी # के बीच अंतर

    C++ एक सांख्यिकीय रूप से टाइप की गई, संकलित, सामान्य-उद्देश्य, केस-संवेदी, फ्री-फॉर्म प्रोग्रामिंग भाषा है जो प्रक्रियात्मक, वस्तु-उन्मुख और सामान्य प्रोग्रामिंग का समर्थन करती है। C++ को एक मध्य-स्तरीय भाषा के रूप में माना जाता है, क्योंकि इसमें उच्च-स्तरीय और निम्न-स्तरीय भाषा सुविधाओं दोनों का स

  1. C# में पास बाय वैल्यू और रेफरेंस पैरामीटर में क्या अंतर है?

    संदर्भ पैरामीटर एक संदर्भ पैरामीटर एक चर के स्मृति स्थान का संदर्भ है। संदर्भ पैरामीटर उसी स्मृति स्थान का प्रतिनिधित्व करते हैं जो वास्तविक पैरामीटर के रूप में विधि को प्रदान किए जाते हैं। जब आप संदर्भ द्वारा पैरामीटर पास करते हैं, तो मान पैरामीटर के विपरीत, इन पैरामीटर के लिए एक नया संग्रहण स्था