BCA / B.Tech 8 min read

call by value & call by reference in Hindi

Call by Value & Call by Reference | C भाषा में कॉल बाई वैल्यू और कॉल बाई रिफरेन्स  हिंदी में 


  • C भाषा में जब हम किसी फ़ंक्शन को कॉल करते हैं, तो दो मुख्य तरीकों का उपयोग किया जा सकता है: Call by Value और Call by Reference। ये दो विधियाँ यह निर्धारित करती हैं कि फ़ंक्शन में पैरामीटर कैसे पास किए जाते हैं। 
  • इन दोनों विधियों का उपयोग तब किया जाता है जब हम फ़ंक्शन को किसी मान (value) या संदर्भ (reference) के माध्यम से डेटा भेजना चाहते हैं।
  • C भाषा में फ़ंक्शन को कॉल करने के दो मुख्य तरीके होते हैं: Call by Value और Call by Reference। Call by Value में वेरिएबल का सिर्फ मान भेजा जाता है और वेरिएबल की कॉपी बनाई जाती है, 
  • जबकि Call by Reference  में वेरिएबल का पता भेजा जाता है, जिससे वेरिएबल के मूल मान को बदला जा सकता है।
  •  Call by Value सरल है लेकिन इसमें मेमोरी की अधिक खपत होती है, जबकि Call by Reference अधिक प्रभावी है लेकिन इसे सावधानी से उपयोग करना पड़ता है।
  • दोनों विधियों का उपयोग विभिन्न परिस्थितियों में किया जा सकता है, और दोनों के अपने-अपने लाभ और हानियाँ हैं। प्रोग्रामर को यह चुनने के लिए विवेकपूर्ण निर्णय लेना चाहिए कि किस विधि का उपयोग करना है, इस पर निर्भर करते हुए कि उन्हें वेरिएबल के मूल मान में परिवर्तन करना है या नहीं।
यहाँ हम विस्तार से समझेंगे कि Call by Value और Call by Reference क्या होते हैं, इनके लाभ, हानि, और इनके बीच क्या अंतर होता है।

Call by Value in C in Hindi |  कॉल बाई वैल्यू :

परिभाषा:

Call by Value वह विधि है जिसमें फ़ंक्शन को कॉल करते समय वेरिएबल का सिर्फ मान (value) पास किया जाता है, न कि वेरिएबल का वास्तविक पता (memory address)। इसका मतलब है कि फ़ंक्शन की पैरामीटर लिस्ट में दिए गए वेरिएबल के मान को फ़ंक्शन के अंदर कॉपी किया जाता है। इस प्रक्रिया में वास्तविक वेरिएबल के मान में कोई परिवर्तन नहीं होता है, क्योंकि हम केवल उसकी कॉपी के साथ काम कर रहे होते हैं।

उदाहरण:

#include

void changeValue(int a) {
    a = 20; // 'a' का मान बदल दिया गया है
}

int main() {
    int num = 10;
    changeValue(num); // 'num' का मान भेजा गया है
    printf("num का मान: %d\n", num); // 'num' का मूल मान नहीं बदलेगा
    return 0;
}

समझाइए:

ऊपर के उदाहरण में, जब हम changeValue() फ़ंक्शन को कॉल करते हैं, तो num का मान (10) a में कॉपी हो जाता है। फ़ंक्शन के अंदर a का मान बदला जाता है, लेकिन मूल num का मान अपरिवर्तित रहता है। इसका कारण है कि सिर्फ उसकी कॉपी भेजी गई थी, न कि उसका वास्तविक पता।

Advantages in call by value in C in Hindi | लाभ :

  • सरलता: Call by Value का उपयोग करना आसान होता है और यह शुरुआती प्रोग्रामर्स के लिए उपयुक्त है।
  • डेटा सुरक्षा: इस विधि में वास्तविक वेरिएबल के मान में कोई परिवर्तन नहीं होता है, जिससे मूल डेटा सुरक्षित रहता है।
  • कॉन्फ्लिक्ट की संभावना कम: फ़ंक्शन में बदलाव करने से मुख्य प्रोग्राम में कोई असर नहीं पड़ता।

Disadvantages in call by value in C in Hindi | हानि :

  • मेमोरी की अधिक खपत: हर बार वेरिएबल की एक नई कॉपी बनाई जाती है, जिससे अधिक मेमोरी का उपयोग होता है।
  • प्रभावी नहीं: जब हमें वेरिएबल के मूल मान को बदलना होता है, तो Call by Value प्रभावी नहीं होता है, क्योंकि वह सिर्फ वेरिएबल की कॉपी को बदलता है।

 Call by Reference in C in Hindi | कॉल बाई रेफरेंस :


परिभाषा:

Call by Reference वह विधि है जिसमें फ़ंक्शन को वेरिएबल का वास्तविक पता (memory address) पास किया जाता है, न कि सिर्फ उसका मान। इसका मतलब है कि फ़ंक्शन के अंदर वेरिएबल का मूल मान बदला जा सकता है। इस विधि में वेरिएबल की कॉपी बनाने की आवश्यकता नहीं होती, क्योंकि फ़ंक्शन वेरिएबल के वास्तविक पते (reference) पर काम करता है।

उदाहरण:
#include

void changeValue(int *a) {
    *a = 20; // 'a' का वास्तविक मान बदल दिया गया है
}

int main() {
    int num = 10;
    changeValue(&num); // 'num' का पता भेजा गया है
    printf("num का नया मान: %d\n", num); // 'num' का मान बदल गया है
    return 0;
}

समझाइए:

ऊपर के उदाहरण में, जब हम changeValue() फ़ंक्शन को कॉल करते हैं, तो num का पता a में पास किया जाता है। इसलिए, फ़ंक्शन के अंदर वेरिएबल के मूल मान को बदल दिया जाता है। अब जब हम प्रिंट करते हैं, तो num का नया मान 20 हो जाता है।

Advantages in call by reference in c  in Hindi | लाभ  :

  • मूल डेटा में परिवर्तन: Call by Reference की मदद से हम वेरिएबल के वास्तविक मान को बदल सकते हैं।
  • मेमोरी की बचत: यह विधि मेमोरी की बचत करती है क्योंकि वेरिएबल की कोई नई कॉपी नहीं बनाई जाती।
  • प्रभावी: जब हमें वेरिएबल के मूल मान को बदलना होता है, तो यह विधि सबसे अधिक प्रभावी होती है।

Disadvantages in call by reference in c  in Hindi | हानि  :

  • जटिलता: Call by Reference का उपयोग करना कठिन हो सकता है, विशेषकर नए प्रोग्रामर्स के लिए।
  • डेटा की सुरक्षा में कमी: वेरिएबल के मूल मान को बदला जा सकता है, जिससे डेटा की सुरक्षा कम हो सकती है।
  • अनपेक्षित परिवर्तन: यदि सावधानीपूर्वक उपयोग न किया जाए, तो इससे वेरिएबल के मान अनपेक्षित रूप से बदल सकते हैं।

Differences Between Call by Value and Call by Reference in C in Hindi | Call by Value और Call by Reference के बीच अंतर :


call by value & call  by reference in Hindi