Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

कॉल बाय वैल्यू और कॉल बाय रेफरेंस के बीच अंतर

किसी फ़ंक्शन के लिए पैरामीटर पास करने के आधार पर प्रोग्रामिंग में हमने फ़ंक्शन आमंत्रण को दो में वर्गीकृत किया:मूल्य द्वारा कॉल और संदर्भ द्वारा कॉल। जैसा कि नाम से पता चलता है कि दोनों आमंत्रणों में हम पैरामीटर के प्रकार से फ़ंक्शन को कॉल कर रहे हैं, हम पैरामीटर के वास्तविक मान को पास कर रहे हैं और दूसरे में हम पैरामीटर के स्थान/संदर्भ को पारित कर रहे हैं।

कॉल बाय वैल्यू और कॉल बाय रेफरेंस के बीच महत्वपूर्ण अंतर निम्नलिखित हैं।

<टेबल> <थेड> सीनियर। नहीं. <वें शैली="पाठ्य-संरेखण:केंद्र;">कुंजी मान के अनुसार कॉल करें संदर्भ द्वारा कॉल करें 1 नामकरण कन्वेंशन इस प्रकार के रूप में पैरामीटर का मान फ़ंक्शन आमंत्रण के लिए पास हो जाता है इसलिए इसे कॉल बाय वैल्यू नाम दिया गया है। दूसरी ओर इस प्रकार में फ़ंक्शन को लागू करने के लिए पैरामीटर का संदर्भ पास किया जाता है, इसलिए इसे कॉल बाय रेफरेंस नाम दिया गया है। 2 आंतरिक कार्यान्वयन कॉल बाय वैल्यू में फ़ंक्शन को कॉल करने के दौरान हमने जो पैरामीटर पारित किया है, उसे फ़ंक्शन के वास्तविक स्थानीय तर्क में कॉपी किया जाता है। संदर्भ द्वारा कॉल में पारित पैरामीटर का स्थान पता/संदर्भ कॉपी किया जाता है और फ़ंक्शन के स्थानीय तर्क को सौंपा जाता है, इसलिए पारित पैरामीटर और वास्तविक तर्क दोनों एक ही स्थान को संदर्भित करते हैं। 3 परिवर्तनों के प्रभाव चूंकि पारित पैरामीटर का मान फ़ंक्शन के तर्क में कॉपी किया जाता है, इसलिए फ़ंक्शन के अंदर तर्क में किया गया कोई भी परिवर्तन पारित पैरामीटर में प्रतिबिंबित नहीं होता है। चूंकि तर्क और पारित पैरामीटर दोनों एक ही स्थान को संदर्भित करते हैं इसलिए फ़ंक्शन के अंदर तर्क में किया गया कोई भी परिवर्तन पारित पैरामीटर में परिलक्षित होता है। 4 संदर्भित स्मृति स्थान स्मृति स्थान संदर्भित पैरामीटर और फ़ंक्शन के वास्तविक तर्क दोनों अलग हैं। पारित पैरामीटर और फ़ंक्शन के वास्तविक तर्क दोनों द्वारा संदर्भित मेमोरी स्थान समान है। 5 समर्थित भाषाएं। कॉल बाय वैल्यू को भाषाओं द्वारा समर्थित किया जाता है जैसे:C++.PHP। विजुअल बेसिक नेट, और सी#। संदर्भ द्वारा कॉल प्राथमिक रूप से जावा द्वारा समर्थित है।

मान द्वारा कॉल बनाम संदर्भ द्वारा कॉल का उदाहरण

ByValue.c

#include <stdio.h>
class ByValue{
   void swapByValue(int, int); /* Prototype */
   int main(){
      int n1 = 10, n2 = 20;
      swapByValue(n1, n2);
      printf("n1: %d, n2: %d\n", n1, n2);
   }
   void swapByValue(int a, int b){
      int t;
      t = a; a = b; b = t;
   }
}

आउटपुट

n1: 10, n2: 20

उदाहरण

ByReference.c

#include <stdio.h>
class ByReference{
   void swapByReference(int*, int*);
   int main(){
      int n1 = 10, n2 = 20;
      swapByReference(&n1, &n2);
      printf("n1: %d, n2: %d\n", n1, n2);
   }
   void swapByReference(int *a, int *b){
      int t;
      t = *a; *a = *b; *b = t;
   }
}

आउटपुट

n1: 20, n2: 10

  1. MEAN.js और MEAN.io के बीच अंतर?

    MEAN MongoDB, Express, Angular और Node.js का संक्षिप्त रूप है। MEAN.js और MEAN.io अनिवार्य रूप से वही चीजें हैं क्योंकि वे दोनों मचान अनुप्रयोग हैं या उपरोक्त 4 चीजों का उपयोग करने के लिए मूल सेट अप हैं। इन पुस्तकालयों/उपकरणों में ये आपके लिए पहले से ही स्थापित हैं। ये आपको बुनियादी ढांचा स्थापित

  1. जावास्क्रिप्ट में वर्ग के योग और योग के वर्ग के बीच अंतर

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

  1. सेलपैडिंग और सेलस्पेसिंग के बीच अंतर

    इस पोस्ट में, हम सेलपैडिंग और सेल स्पेसिंग के बीच के अंतर को समझेंगे। सेलपैडिंग यह एक ही सेल से जुड़ा होता है। यह सेल की सीमा और सेल के भीतर मौजूद सामग्री के बीच मौजूद सफेद स्थान को नियंत्रित करने में मदद करता है। सेल पैडिंग का डिफ़ॉल्ट मान 1 है। इसका उपयोग एक प्रभावी तरीके के रूप में कि