BCA / B.Tech 9 min read

Parameter & Arguments in C in Hindi

Parameter and Argument Passing in C in Hindi | C भाषा में पैरामीटर और आर्गुमेंट पासिंग :


C भाषा में पैरामीटर और आर्गुमेंट पासिंग एक महत्वपूर्ण प्रक्रिया है, जिसका उपयोग फ़ंक्शन कॉल के दौरान डेटा को पास करने के लिए किया जाता है। फ़ंक्शन प्रोग्राम का एक हिस्सा होता है, जिसे बार-बार इस्तेमाल किया जा सकता है।

 पैरामीटर और आर्गुमेंट पासिंग हमें फ़ंक्शन में इनपुट डेटा देने और आउटपुट प्राप्त करने की सुविधा प्रदान करता है।

C भाषा में पैरामीटर और आर्गुमेंट पासिंग एक महत्वपूर्ण अवधारणा है, जो हमें फ़ंक्शन के माध्यम से डेटा को पास करने और पुनः प्राप्त करने की सुविधा प्रदान करती है। कॉल बाय वैल्यू सुरक्षित होता है लेकिन मेमोरी का अधिक उपयोग करता है, 

जबकि कॉल बाय रेफरेंस मेमोरी की बचत करता है लेकिन डेटा को बदला जा सकता है। दोनों ही तकनीकों का सही उपयोग प्रोग्राम की आवश्यकता और कार्यक्षमता पर निर्भर करता है।


पैरामीटर और आर्गुमेंट क्या होते हैं?

पैरामीटर (Parameter): पैरामीटर वे वेरिएबल होते हैं जो फ़ंक्शन की परिभाषा (definition) में डिक्लेयर किए जाते हैं। इन्हें "formal parameters" भी कहा जाता है।
आर्गुमेंट (Argument): आर्गुमेंट वे मान होते हैं जो फ़ंक्शन को कॉल करते समय पास किए जाते हैं। इन्हें "actual parameters" भी कहा जाता है।

पैरामीटर पासिंग के प्रकार

C भाषा में पैरामीटर पासिंग के दो मुख्य प्रकार होते हैं:

कॉल बाय वैल्यू (Call by Value)
कॉल बाय रेफरेंस (Call by Reference)

अब हम इन दोनों प्रकारों को विस्तार से समझेंगे:

1. कॉल बाय वैल्यू (Call by Value)

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

उदाहरण: Call by Value

#include <stdio.h>

// फ़ंक्शन डिफिनिशन
void changeValue(int x) {
    x = 100;  // यहाँ x की वैल्यू बदल दी गई है
}

int main() {
    int a = 10;
    
    // फ़ंक्शन कॉल
    changeValue(a);
    
    // a की वैल्यू नहीं बदलेगी
    printf("a की वैल्यू: %d\n", a);  // आउटपुट होगा: a की वैल्यू: 10
    
    return 0;
}

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

कॉल बाय वैल्यू के फायदे:

  • सुरक्षा: ओरिजिनल डेटा सुरक्षित रहता है और फ़ंक्शन के अंदर उसकी वैल्यू नहीं बदलती।
  • सरलता: इसे समझना और लागू करना आसान होता है।

कॉल बाय वैल्यू के नुकसान:

  • अतिरिक्त मेमोरी: हर बार आर्गुमेंट की कॉपी बनती है, जिससे अतिरिक्त मेमोरी का उपयोग होता है।
  • डेटा बदलने की असमर्थता: ओरिजिनल डेटा को फ़ंक्शन के अंदर से बदला नहीं जा सकता।

2. कॉल बाय रेफरेंस (Call by Reference)

कॉल बाय रेफरेंस में, जब आर्गुमेंट को पास किया जाता है, तो उस आर्गुमेंट का रेफरेंस (पता) फ़ंक्शन को पास किया जाता है। इसका मतलब यह है कि फ़ंक्शन के अंदर उस रेफरेंस का उपयोग करके ओरिजिनल डेटा को बदला जा सकता है। इसमें आर्गुमेंट की कोई कॉपी नहीं बनती, बल्कि ओरिजिनल डेटा का पता पास किया जाता है।

उदाहरण: Call by Reference

#include <stdio.h>

// फ़ंक्शन डिफिनिशन
void changeValue(int *x) {
    *x = 100;  // यहाँ ओरिजिनल वैल्यू बदल दी गई है
}

int main() {
    int a = 10;
    
    // फ़ंक्शन कॉल (रेफरेंस पास करना)
    changeValue(&a);
    
    // a की वैल्यू बदलेगी
    printf("a की वैल्यू: %d\n", a);  // आउटपुट होगा: a की वैल्यू: 100
    
    return 0;
}

कार्य सिद्धांत: इस उदाहरण में, जब हम a के पते (address) को changeValue() फ़ंक्शन में पास करते हैं, तो फ़ंक्शन में उस पते का उपयोग करके a की वैल्यू को सीधे बदल दिया जाता है।

कॉल बाय रेफरेंस के फायदे:

  • मेमोरी की बचत: कॉपी नहीं बनाई जाती, इसलिए मेमोरी की बचत होती है।
  • डेटा परिवर्तन की क्षमता: ओरिजिनल डेटा को फ़ंक्शन के अंदर से बदला जा सकता है।

कॉल बाय रेफरेंस के नुकसान:

  • डेटा सुरक्षा का अभाव: ओरिजिनल डेटा को बदला जा सकता है, जिससे गलतियों की संभावना बढ़ जाती है।
  • समझने में कठिनाई: कॉल बाय रेफरेंस की प्रक्रिया को नए प्रोग्रामरों के लिए समझना कठिन हो सकता है।