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

C/C++ में int और const int& में क्या अंतर है?

अंतर की व्याख्या

यहां हम देखेंगे कि C या C++ में int और const int& में क्या अंतर है।

int (वैल्यू टाइप)

  • इंटीजर टाइप डेटा का टाइप है
  • वैल्यू सीधे स्टोर करता है
  • कॉपी सेमेन्टिक्स: पास करने पर कॉपी बनती है
  • आकार: आमतौर पर 4 बाइट्स (32-बिट)

const int& (कॉन्स्टेंट रेफरेंस टू इंट)

  • const किसी चीज को कॉन्स्टेंट बनाने के लिए उपयोग किया जाता है
  • int& इंट टाइप डेटा का रेफरेंस रखता है
  • यह रेफरेंस मान स्वयं कॉन्स्टेंट है (रेफरेंस को रीबाइंड नहीं किया जा सकता)
  • const यहां रिडंडेंट है क्योंकि रेफरेंस वैसे भी रीबाइंड नहीं किए जा सकते
  • कंपाइलर वार्निंग या एरर दे सकता है

const int& vs int const&

const int& int const& के समान है। दोनों एक कॉन्स्टेंट इंटीजर के रेफरेंस को संदर्भित करते हैं। रेफरेंस के माध्यम से इंटीजर को संशोधित नहीं किया जा सकता।

व्यावहारिक अंतर

फ़ंक्शन पैरामीटर्स में

// वैल्यू द्वारा पास - कॉपी बनाता है
void byValue(int x) {
    x = 10;  // केवल लोकल कॉपी बदलता है
}

// कॉन्स्ट रेफरेंस द्वारा पास - कोई कॉपी नहीं, रीड-ओनली एक्सेस
void byConstRef(const int& x) {
    // x = 10;  // त्रुटि: const ऑब्जेक्ट को संशोधित नहीं कर सकते
    // लेकिन बड़ा ऑब्जेक्ट कॉपी नहीं होता
}

// नॉन-कॉन्स्ट रेफरेंस - कॉलर को संशोधित करने की अनुमति
void byRef(int& x) {
    x = 10;  // कॉलर का वेरिएबल बदलता है
}

उपयोग दिशानिर्देश

स्थितिअनुशंसितकारण
छोटे टाइप्स (int, float, char)वैल्यू द्वारा (int)कॉपी सस्ती है, सरल
बड़े ऑब्जेक्ट्स (क्लास, स्ट्रक्चर)कॉन्स्ट रेफरेंस (const T&)कॉपी से बचाता है, रीड-ओनली
कॉलर को संशोधित करने की आवश्यकतानॉन-कॉन्स्ट रेफरेंस (T&)आउटपुट पैरामीटर
मूव सेमेन्टिक्स (C++11)वैल्यू द्वारा + std::moveकॉपी एलिजन, मूव ऑप्टिमाइज़ेशन

const int& का विशेष मामला

void func(const int& x);

func(10);        // ठीक: अस्थायी से const रेफरेंस बाइंड होता है
func(someInt);   // ठीक: lvalue से बाइंड

int& ref = 10;   // त्रुटि: नॉन-कॉन्स्ट रेफरेंस अस्थायी से बाइंड नहीं हो सकता
const int& cref = 10;  // ठीक: const रेफरेंस अस्थायी का जीवनकाल बढ़ाता है

निष्कर्ष

  • int: वैल्यू टाइप, कॉपी सेमेन्टिक्स
  • const int&: कॉन्स्टेंट इंट का रेफरेंस, कोई कॉपी नहीं, रीड-ओनली एक्सेस
  • पैरामीटर्स पर const int& में const रिडंडेंट नहीं है - यह रेफरेंस किए गए ऑब्जेक्ट पर लागू होता है, रेफरेंस पर नहीं
  • बड़े ऑब्जेक्ट्स के लिए const T& पसंद करें जिन्हें संशोधित करने की आवश्यकता नहीं है
  1. C++ में const int*, const int * const, और int const * में क्या अंतर है? C++ में const int*, const int * const, और int const * में क्या अंतर है?

    यहां हम पूर्णांक पॉइंटर्स, पूर्णांक स्थिरांक और पूर्णांक स्थिरांक पॉइंटर्स के आधार पर वेरिएबल घोषणा के कुछ अलग प्रकार देखेंगे। उन्हें निर्धारित करने के लिए हम क्लॉकवाइज/स्पाइरल नियम का उपयोग करेंगे। शर्तों पर चर्चा करके, हम नियमों को भी समझ सकते हैं। const int *. यह कंपाइलर को बताने के लिए उपयोग कि

  1. - C++ में #define और const कीवर्ड में क्या अंतर है?

    #define डायरेक्टिव एक प्रीप्रोसेसर डायरेक्टिव है; प्रीप्रोसेसर कंपाइलर द्वारा इसे देखने से पहले उन मैक्रोज़ को उनके बॉडी से बदल देता है। इसे अपने सोर्स कोड के स्वचालित सर्च और रिप्लेस के रूप में सोचें। एक const वेरिएबल डिक्लेरेशन भाषा में एक वास्तविक वेरिएबल घोषित करता है, जिसे आप एक वास्तविक वेरिए

  1. - C# में int और Int32 में क्या अंतर है?

    Int32 .NET फ्रेमवर्क द्वारा प्रदान किया गया एक प्रकार है जबकि int C# भाषा में Int32 का एक उपनाम (alias) है। Int32 x = 5; int x = 5; इसलिए, उपयोग में दोनों उपरोक्त स्टेटमेंट्स एक 32-बिट इंटीजर रखेंगे। वे एक ही कोड में संकलित होते हैं, इसलिए निष्पादन समय पर कोई अंतर नहीं होता। एकमात्र मामूली अंतर य