2012-10-31 13 views
25

static वैश्विक और गैर-static सी ++ में वैश्विक पहचानकर्ता के बीच क्या अंतर है?सी ++ में स्थिर वैश्विक और गैर स्थैतिक वैश्विक पहचानकर्ता के बीच क्या अंतर है?

+2

"स्टेटिक ग्लोबल" - इसका मतलब क्या है? – Andrzej

+2

@Andrzej एक वैश्विक 'टाइपिक' कीवर्ड के साथ एक ग्लोबल टाइप करें। उदाहरण के लिए वैश्विक दायरे पर 'स्थिर int x = 5;'। –

उत्तर

28

स्टेटिक वैरिएबल के दायरे को उसी translation unit पर सीमित करता है।
स्थैतिक वैश्विक परिवर्तनीय आंतरिक संबंध है।
गैर स्थैतिक वैश्विक परिवर्तनीय बाहरी लिंक है।

अच्छा पढ़ें:।
What is external linkage and internal linkage?

+0

यदि एक गैर स्थैतिक वैश्विक बाह्य संबंध है, तो 'बाहरी' का उपयोग क्या है? – rubenvb

+0

@ रूबेनव: आपके क्यू का उत्तर जवाब देने के लिए लिंक इनलाइन में विस्तार से समझाया गया है। –

+2

@ रुबेनवब 'बाहरी' का अर्थ है कि यह एक घोषणा है और एक परिभाषा नहीं है, जैसे किसी फ़ंक्शन के प्रोटोटाइप की तरह। –

7

एक वैश्विक static चर अनुवाद इकाई (यानी स्रोत फ़ाइल) चर में है एक गैर स्थिर वैश्विक चर दूसरे से संदर्भित किया जा सकता में ही उपलब्ध है स्रोत फ़ाइलें। जबकि स्थिर वैश्विक चर आप नहीं जानते हैं कि क्या अंतर है नहीं

+3

अधिक विशेष रूप से: 'स्थिर' का उपयोग करके लिंकर उस अनुवाद इकाई से प्रतीक निर्यात करने से रोकता है। – cdhowie

1

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

+1

बेशक, वे पॉइंटर्स के माध्यम से "सुलभ" हैं। वे सिर्फ "अन्य अनुवाद इकाइयों के दायरे से नामों से संदर्भित नहीं किए जा सकते" (§3.5)। – dyp

+1

@ डीईपी मुझे लगता है कि यह स्पष्ट है कि राहुल का मतलब है कि चर इसके नाम से सुलभ नहीं है। – Pavel

संबंधित मुद्दे