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

C भाषा में कॉल बाय वैल्यू (Call by Value) क्या है?

कॉल बाय वैल्यू (मान द्वारा कॉल)

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

एल्गोरिदम

चरण 1: रनटाइम पर कोई 2 संख्याएं दर्ज करें
चरण 2: उन दो संख्याओं को कंसोल से पढ़ें
चरण 3: swap फ़ंक्शन को आर्गुमेंट्स के साथ कॉल करें (यह कॉल बाय वैल्यू है)
चरण 4: कॉल किए गए फ़ंक्शन पर जाएं: swap(int a, int b)
चरण 5: स्वैप के बाद संख्याएं प्रिंट करें

प्रोग्राम

#include <stdio.h>

void swap(int a, int b) {
    int temp = a;
    a = b;
    b = temp;
    printf("फ़ंक्शन के अंदर: a=%d, b=%d\n", a, b);
}

int main() {
    int a, b;
    
    printf("2 संख्याएं दर्ज करें: ");
    scanf("%d %d", &a, &b);
    
    printf("स्वैप से पहले: a=%d, b=%d\n", a, b);
    swap(a, b);  // मान पास किए जाते हैं
    printf("स्वैप के बाद: a=%d, b=%d\n", a, b);
    
    return 0;
}

आउटपुट

2 संख्याएं दर्ज करें: 10 20
स्वैप से पहले: a=10, b=20
फ़ंक्शन के अंदर: a=20, b=10
स्वैप के बाद: a=10, b=20

व्याख्या

  • main में a=10, b=20
  • swap(a, b) कॉल करता है → a और b के मान (10, 20) कॉपी होकर फ़ंक्शन पैरामीटर्स में जाते हैं
  • फ़ंक्शन के अंदर स्वैप होता है → स्थानीय a=20, b=10
  • फ़ंक्शन समाप्त → स्थानीय चर नष्ट
  • main में मूल a, b अपरिवर्तित: 10, 20

मेमोरी चित्रण

main() स्टैक फ्रेम:          swap() स्टैक फ्रेम:
+-------+-------+              +-------+-------+
| a: 10 | b: 20 |   ──────►    | a: 10 | b: 20 |  (कॉपी प्राप्त)
+-------+-------+              +-------+-------+
                               | स्वैप |
                               +-------+-------+
                               | a: 20 | b: 10 |  (स्थानीय परिवर्तन)
                               +-------+-------+
                               फ्रेम समाप्त, मान खो गए

कब उपयोग करें?

  • जब मूल चर को संशोधित नहीं करना चाहते
  • छोटे डेटा प्रकार (int, float, char) के लिए कुशल
  • बड़े संरचनाओं/सरणियों के लिए अकुशल (कॉपी ओवरहेड)

तुलना: कॉल बाय रेफरेंस (अगला लेख)

पहलूकॉल बाय वैल्यूकॉल बाय रेफरेंस
पास किया जाता हैमान की प्रतिपता
मूल पर प्रभावनहींहां
सिंटैक्सfunc(a, b)func(&a, &b)
पैरामीटरint aint *a
एक्सेससीधे a*a के माध्यम से
  1. C भाषा में कंस्टेंट क्या हैं और उदाहरण सहित C भाषा में कंस्टेंट क्या हैं और उदाहरण सहित

    कंस्टेंट को उस वेरिएबल के रूप में भी जाना जाता है जहां एक बार परिभाषित होने पर, प्रोग्राम निष्पादन के दौरान मान कभी नहीं बदलता। इस प्रकार, हम एक वेरिएबल को कंस्टेंट के रूप में घोषित कर सकते हैं जो निश्चित मानों को संदर्भित करता है। इसे लिटरल्स भी कहा जाता है। कंस्टेंट को परिभाषित करने के लिए const क

  1. C भाषा में शिफ्ट ऑपरेशन क्या हैं? C भाषा में शिफ्ट ऑपरेशन क्या हैं?

    समस्या C भाषा का उपयोग करके किसी संख्या के बाएं शिफ्ट, दाएं शिफ्ट और कॉम्प्लीमेंट को दिखाने का सरल प्रोग्राम क्या है? समाधान बाएं शिफ्ट (Left Shift) यदि किसी वेरिएबल का मान एक बार बाएं शिफ्ट किया जाता है, तो उसका मान दोगुना हो जाता है। उदाहरण के लिए, a = 10, तो a<<1 = 20 दाएं शिफ्ट (Right Sh

  1. - C# में 'new' कीवर्ड का उपयोग क्या है

    ऐरे का इंस्टेंस बनाने के लिए new कीवर्ड का उपयोग करें - int[] a = new int[5]; new ऑपरेटर का उपयोग ऑब्जेक्ट बनाने या इंस्टेंटिएट करने के लिए किया जाता है। यहाँ उदाहरण में, new का उपयोग करके क्लास के लिए ऑब्जेक्ट बनाया गया है - उदाहरण using System; namespace CalculatorApplication { class NumberMan