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# में अंतर

    C++ एक स्टैटिकली-टाइप्ड, कंपाइल्ड, मल्टी-पैराडाइम भाषा है (प्रोसीजरल, OOP, जेनेरिक)। C# एक मैनेज्ड, ऑब्जेक्ट-ओरिएंटेड भाषा है जो .NET पर चलती है। मुख्य अंतर पहलूC++C# मेमोरी प्रबंधनमैनुअल (new/delete, स्मार्ट पॉइंटर्स)स्वचालित (गार्बेज कलेक्शन) प्लेटफॉर्मक्रॉस-प्लेटफॉर्म (नेटिव कंपाइलेशन)मुख्य

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

    पास बाय वैल्यू (Pass by Value) - डिफ़ॉल्ट यह पैरामीटर्स पास करने का डिफ़ॉल्ट तंत्र है। जब कोई मेथड कॉल किया जाता है, तो प्रत्येक वैल्यू पैरामीटर के लिए एक नया स्टोरेज लोकेशन बनाया जाता है। वास्तविक पैरामीटर्स के मान इसमें कॉपी किए जाते हैं। इसलिए, मेथड के अंदर पैरामीटर में किए गए परिवर्तनों का आर्गु