खोज…


सरल ब्लॉक गुंजाइश

एक खंड { ... } में एक चर का दायरा, घोषणा के बाद शुरू होता है और ब्लॉक के अंत में समाप्त होता है। यदि नेस्टेड ब्लॉक है, तो आंतरिक ब्लॉक एक चर के दायरे को छिपा सकता है जो बाहरी ब्लॉक में घोषित किया गया है।

{
    int x = 100;
    //   ^
    //   Scope of `x` begins here
    //
}   // <- Scope of `x` ends here

यदि एक नेस्टेड ब्लॉक बाहरी ब्लॉक के भीतर शुरू होता है, तो एक नया घोषित चर जो बाहरी वर्ग में पहले नाम के साथ है, पहले को छुपाता है।

{
    int x = 100;

    {
        int x = 200;

        std::cout << x;  // <- Output is 200
    }

    std::cout << x;  // <- Output is 100
}

सार्वत्रिक चर

एक चर का एक भी उदाहरण घोषित करने के लिए जो अलग-अलग स्रोत फ़ाइलों में सुलभ है, इसे कीवर्ड के extern साथ वैश्विक दायरे में बनाना संभव है। यह कीवर्ड कंपाइलर का कहना है कि कहीं न कहीं कोड में इस वेरिएबल के लिए एक परिभाषा है, इसलिए इसे हर जगह इस्तेमाल किया जा सकता है और मेमोरी के एक ही स्थान पर सभी लिखा / पढ़ा जाएगा।

// File my_globals.h:

#ifndef __MY_GLOBALS_H__
#define __MY_GLOBALS_H__

extern int circle_radius; // Promise to the compiler that circle_radius 
                          // will be defined somewhere

#endif

// File foo1.cpp:

#include "my_globals.h"

int circle_radius = 123; // Defining the extern variable

// File main.cpp:

#include "my_globals.h"
#include <iostream>

int main()
{
    std::cout << "The radius is: " << circle_radius << "\n";'
    return 0;
}

आउटपुट:

The radius is: 123


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow