स्थैतिक चर (स्टैटिक वेरिएबल): Difference between revisions

From Vigyanwiki
No edit summary
 
(13 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{short description|Programming variable that persists for the lifetime of the program}}
{{short description|Programming variable that persists for the lifetime of the program}}
{{see also|Static (keyword)}}
[[कंप्यूटर प्रोग्रामिंग]] में, '''स्थैतिक चर''' (प्रोग्रामिंग) है जो [[स्मृति आवंटन|"स्थैतिक रूप "]] से आवंटित किया गया है, जिसका अर्थ है कि इसका जीवनकाल (या सीमा) कार्यक्रम का संपूर्ण भाग है। यह अल्पकालिक [[स्वचालित चर]] के विपरीत है, जिसका भंडारण स्टैक आवंटित एवं [[कॉल स्टैक]] पर विस्थापित किया गया है, एवं [[ वस्तु (कंप्यूटर विज्ञान) |वस्तु (कंप्यूटर विज्ञान)]] के विपरीत, जिसका भंडारण गतिशील रूप से आवंटित किया जाता है एवं हीप मेमोरी में विस्थापित किया जाता है।
[[कंप्यूटर प्रोग्रामिंग]] में, एक स्थिर चर एक [[चर (प्रोग्रामिंग)]] है जो [[स्मृति आवंटन]] स्थिर रूप से किया गया है, जिसका अर्थ है कि इसका चर जीवनकाल (या सीमा) कार्यक्रम का संपूर्ण भाग है। यह अल्पकालिक [[स्वचालित चर]] के विपरीत है, जिसका भंडारण स्टैक आवंटन है और [[कॉल स्टैक]] पर हटा दिया गया है; और [[ वस्तु (कंप्यूटर विज्ञान) ]] के विपरीत, जिसका भंडारण डायनेमिक मेमोरी आवंटन है और ढेर मेमोरी में हटा दिया गया है।


चर जीवनकाल स्कोप (कंप्यूटर विज्ञान) (जहां एक चर का उपयोग किया जा सकता है) के विपरीत है: वैश्विक और स्थानीय दायरे का संदर्भ देते हैं, जीवनकाल नहीं, लेकिन गुंजाइश अक्सर जीवनकाल का अर्थ है। कई भाषाओं में, [[वैश्विक चर]] हमेशा स्थिर होते हैं, लेकिन कुछ भाषाओं में वे गतिशील होते हैं, जबकि [[स्थानीय चर]] आमतौर पर स्वचालित होते हैं, लेकिन स्थिर हो सकते हैं।
चर जीवनकाल क्षेत्र (कंप्यूटर विज्ञान) (जहां चर का उपयोग किया जा सकता है) के विपरीत है: वैश्विक एवं स्थानीय परिधि को संदर्भित करता है, जीवनकाल नहीं, किन्तु स्थान प्रायः जीवनकाल का अर्थ है। कई भाषाओं में, [[वैश्विक चर]] सदैव स्थैतिक होते हैं, किन्तु कुछ भाषाओं में वे गतिशील होते हैं, जबकि [[स्थानीय चर]] सामान्यतः स्वचालित होते हैं, किन्तु स्थैतिक हो सकते हैं।


सामान्य रूप में,{{visible anchor|static memory allocation}} [[संकलन समय]] पर मेमोरी का आवंटन है, संबंधित प्रोग्राम के निष्पादित होने से पहले, डायनेमिक मेमोरी आवंटन या [[स्वचालित मेमोरी आवंटन]] के विपरीत जहां मेमोरी को रन टाइम (प्रोग्राम जीवनचक्र चरण) में आवश्यकतानुसार आवंटित किया जाता है।<ref>{{cite web
सामान्य रूप में,{{visible anchor|स्थैतिक मेमोरी आवंटन}} [[संकलन समय]] पर मेमोरी का आवंटन होता है, संबंधित प्रोग्राम के निष्पादित होने से पूर्व, डायनेमिक मेमोरी आवंटन या [[स्वचालित मेमोरी आवंटन]] के विपरीत जहां मेमोरी को रन टाइम (प्रोग्राम जीवनचक्र चरण) में आवश्यकतानुसार आवंटित किया जाता है।<ref>{{cite web
| access-date = 2011-06-16
| access-date = 2011-06-16
| author = Jack Rons  
| author = Jack Rons  
Line 15: Line 14:


== इतिहास ==
== इतिहास ==
स्थैतिक चर कम से कम [[ALGOL 60]] (1960) तक दिनांकित होते हैं, जहाँ उन्हें ''स्वयं के चर'' के रूप में जाना जाता है:
स्थैतिक चर कम से कम [[ALGOL 60|ऐल्गॉल 60]] (1960) तक दिनांकित होते हैं, जहाँ उन्हें स्वयं के चर के रूप में जाना जाता है।
 
{{quote
{{quote
|A declaration may be marked with the additional declarator '''own.''' This has the following effect: upon a re-entry into the block, the values of '''own''' quantities will be unchanged from their values at the last exit, while the values of declared variables that are not marked with '''own''' is undefined.
|घोषणा को अतिरिक्त घोषणाकर्ता '''स्वयं''' के साथ चिह्नित किया जा सकता है। इसका निम्न प्रभाव है, ब्लॉक में प्रवेश करने पर, '''स्वयं''' मात्रा के मान उनके मूल्यों से अपरिवर्तित रहेंगे, अंतिम निकास, जबकि घोषित चर के मान जो '''स्वयं''' के साथ चिह्नित नहीं हैं, अपरिभाषित हैं।|ऐल्गॉल 60 पर संशोधित रिपोर्ट, खंड "5 में घोषणाएं", पी-14 हैं।}}
|Revised report on ALGOL 60, section "5. Declarations", p. 14}}
यह परिभाषा स्थैतिक चर से अत्यधिक भिन्न है, यह केवल व्यवहार को निर्दिष्ट करती है, एवं इसलिए आजीवन, भंडारण स्वयं के चर को आवंटित किया जा सकता है, जब किसी फ़ंक्शन को प्रथम बार कॉल किया जाता है, उदाहरण के लिए, प्रोग्राम लोड समय के अतिरिक्त किया जाता है।
यह परिभाषा एक स्थिर चर से काफी अलग है: यह केवल व्यवहार को निर्दिष्ट करती है, और इसलिए आजीवन, भंडारण नहीं: एक स्वयं के चर को तब आवंटित किया जा सकता है जब किसी फ़ंक्शन को पहली बार कॉल किया जाता है, उदाहरण के लिए, प्रोग्राम लोड समय के बजाय।


इन चरों को संदर्भित करने के लिए स्थिर शब्द का उपयोग कम से कम [[बीसीपीएल]] (1966) तक होता है, और [[सी प्रोग्रामिंग भाषा]] द्वारा लोकप्रिय किया गया है, जो बीसीपीएल से काफी प्रभावित था। बीसीपीएल परिभाषा पढ़ती है:
इन चरों को संदर्भित करने के लिए स्थैतिक शब्द का उपयोग कम से कम [[बीसीपीएल]] (1966) तक होता है, एवं [[सी प्रोग्रामिंग भाषा]] द्वारा लोकप्रिय किया गया है, जो बीसीपीएल से अत्यधिक प्रभावित था। बीसीपीएल परिभाषा पढ़ती है:
{{quote
{{quote
|(1) Static data items:<br>Those data items whose extents lasts as long as the program execution time; such data items have manifest constant Lvalues. Every static data item must have been declared either in a function or routine definition, in a global declaration or as a label set by colon.
|(1) स्टेटिक डेटा आइटम:<br>वे डेटा आइटम जिनकी सीमा प्रोग्राम के निष्पादन समय तक रहती है; इस प्रकार के डेटा आइटम में निरंतर अंतराल दिखाई देते हैं। वैश्विक घोषणा में या कोलन द्वारा निर्धारित लेबल के रूप में प्रत्येक स्थैतिक डेटा आइटम को या तो फ़ंक्शन या नियमित परिभाषा में घोषित किया जाना चाहिए।|बीसीपीएल संदर्भ नियमावली, 7.2 अंतरिक्ष आवंटन और डेटा
|The BCPL Reference Manual, 7.2 Space Allocation and Extent of Data Items}}
क्षेत्र की सीमा}}
ध्यान दें कि बीसीपीएल ने एक गतिशील डेटा आइटम को परिभाषित किया है जिसे अब एक स्वचालित चर (स्थानीय, स्टैक-आवंटित) कहा जाता है, ढेर-आवंटित वस्तुओं के लिए नहीं, जो कि गतिशील आवंटन शब्द का वर्तमान उपयोग है।


द स्टेटिक (कीवर्ड) |<code>static</code> C और संबंधित भाषाओं में स्थिर चर और अन्य अवधारणाओं दोनों के लिए कीवर्ड का उपयोग किया जाता है।
ध्यान दें कि बीसीपीएल ने गतिशील डेटा आइटम को परिभाषित किया है जिसे अब स्वचालित चर (स्थानीय, स्टैक-आवंटित) कहा जाता है, समूह-आवंटित वस्तुओं के लिए नहीं, जो कि गतिशील आवंटन शब्द का वर्तमान उपयोग है।
 
<code>static</code> C एवं संबंधित भाषाओं में स्थैतिक चर एवं अन्य अवधारणाओं दोनों के लिए कीवर्ड का उपयोग किया जाता है।


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


== स्कोप ==
== क्षेत्र ==
{{see also|Variable (computer science)#Scope and extent}}
{{see also|चर (कंप्यूटर विज्ञान)#क्षेत्र एवं सीमा}}


वेरिएबल (कंप्यूटर साइंस) # स्कोप और सीमा के संदर्भ में, स्टैटिक वेरिएबल्स में प्रोग्राम के पूरे रन की सीमा होती है, लेकिन इसका दायरा अधिक सीमित (कंप्यूटर साइंस) हो सकता है। एक बुनियादी अंतर एक स्थिर वैश्विक चर के बीच है, जिसका वैश्विक दायरा है और इस प्रकार यह पूरे कार्यक्रम के संदर्भ में है, और एक [[स्थिर स्थानीय चर]], जिसका स्थानीय दायरा है। एक स्थिर स्थानीय चर एक स्थानीय चर से भिन्न होता है क्योंकि एक स्थिर स्थानीय चर को केवल एक बार आरंभ किया जाता है, चाहे कितनी बार जिस फ़ंक्शन में रहता है उसे कॉल किया जाता है और इसके मूल्य को बनाए रखा जाता है और उस फ़ंक्शन को कई कॉल के माध्यम से एक्सेस किया जाता है जिसमें इसे घोषित किया जाता है। , उदा. गिनती चर के रूप में उपयोग करने के लिए। एक स्थिर चर में [[ मॉड्यूल गुंजाइश ]] या कुछ प्रकार भी हो सकते हैं, जैसे सी प्रोग्रामिंग भाषा में आंतरिक लिंकेज, जो फ़ाइल स्कोप या मॉड्यूल स्कोप का एक रूप है।
वेरिएबल (कंप्यूटर साइंस) क्षेत्र एवं सीमा के संदर्भ में, स्टैटिक वेरिएबल्स में प्रोग्राम के पूर्ण रन की सीमा होती है, किन्तु इसका क्षेत्र अधिक सीमित (कंप्यूटर साइंस) हो सकता है। मूल अंतर स्थैतिक वैश्विक चर के मध्य है, जिसका वैश्विक क्षेत्र है एवं इस प्रकार यह पूर्ण कार्यक्रम के संदर्भ में है, एवं [[स्थिर स्थानीय चर|स्थैतिक स्थानीय चर]], जिसका स्थानीय क्षेत्र है। स्थानीय चर से भिन्न होता है क्योंकि स्थैतिक स्थानीय चर को केवल आरंभ किया जाता है, संभवता जितनी बार जिस फ़ंक्शन में रहता है उसका आह्वान किया जाता है एवं इसके मूल्य को बनाए रखा जाता है एवं उस फ़ंक्शन को कई कॉल के माध्यम से एक्सेस किया जाता है जिसमें इसे घोषित किया जाता है। , उदा. गिनती चर के रूप में उपयोग करने के लिए स्थैतिक चर में [[ मॉड्यूल गुंजाइश | मापांक क्षेत्र]] या कुछ प्रकार भी हो सकते हैं, जैसे सी प्रोग्रामिंग भाषा में आंतरिक संपर्क, जो फ़ाइल क्षेत्र या मापांक क्षेत्र का रूप होता है।


=== उदाहरण ===
=== उदाहरण ===
सी में स्थिर स्थानीय चर का एक उदाहरण:
सी में स्थैतिक स्थानीय चर का उदाहरण:
<syntaxhighlight lang=c>
<syntaxhighlight lang=c>
#include <stdio.h>
#include <stdio.h>
Line 64: Line 64:


== वस्तु-उन्मुख प्रोग्रामिंग ==
== वस्तु-उन्मुख प्रोग्रामिंग ==
[[ ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग ]] में, एक [[स्थिर [[सदस्य चर]]]] की अवधारणा भी होती है, जो कि स्थिर रूप से परिभाषित वर्ग का एक [[वर्ग चर]] होता है, यानी, किसी दिए गए वर्ग का एक सदस्य चर जो सभी [[वर्ग उदाहरण]]ों (ऑब्जेक्ट्स) में साझा किया जाता है, और है इन वस्तुओं के सदस्य चर के रूप में पहुँचा जा सकता है। एक गतिशील रूप से परिभाषित वर्ग का एक वर्ग चर, उन भाषाओं में जहाँ कक्षाओं को रन टाइम पर परिभाषित किया जा सकता है, तब आवंटित किया जाता है जब वर्ग परिभाषित होता है और स्थिर नहीं होता है।
[[ ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग |वस्तु ओरिएंटेड प्रोग्रामिंग]] में, [[स्थैतिक [[सदस्य चर]]]] की अवधारणा भी होती है, जो कि स्थैतिक रूप से परिभाषित वर्ग का [[वर्ग चर]] होता है, अर्थात, किसी दिए गए वर्ग का सदस्य चर जो सभी [[वर्ग उदाहरण]] में विचार किया जाता है, एवं इन वस्तुओं के सदस्य चर के रूप में पहुँचा जा सकता है। गतिशील रूप से परिभाषित वर्ग का वर्ग चर, उन भाषाओं में जहाँ कक्षाओं को रन टाइम पर परिभाषित किया जा सकता है, तब आवंटित किया जाता है जब वर्ग परिभाषित होता है एवं स्थैतिक नहीं होता है।


संकलन-समय पर ज्ञात वस्तु स्थिरांक, जैसे कि स्ट्रिंग शाब्दिक, आमतौर पर स्थिर रूप से आवंटित किए जाते हैं। ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में, क्लासेस के [[ आभासी विधि तालिका ]] आमतौर पर स्टैटिकली आवंटित किए जाते हैं। एक स्थाई रूप से परिभाषित मूल्य वैश्विक चर भी हो सकता है, यह सुनिश्चित करने के लिए एक ही [[अपरिवर्तनीय वस्तु]] मूल्य का उपयोग स्थिरता के लिए किया जाता है।
संकलन-समय पर ज्ञात वस्तु स्थैतिकांक, जैसे कि तार शाब्दिक, सामान्यतः स्थैतिक रूप से आवंटित किए जाते हैं। वस्तु-ओरिएंटेड प्रोग्रामिंग में, कक्षाओं के [[ आभासी विधि तालिका |आभासी विधि तालिका]] सामान्यतः स्थैतिक आवंटित किए जाते हैं। स्थाई रूप से परिभाषित मूल्य वैश्विक चर भी हो सकता है, यह सुनिश्चित करने के लिए [[अपरिवर्तनीय वस्तु]] मूल्य का उपयोग स्थैतिकता के लिए किया जाता है।


== यह भी देखें ==
== यह भी देखें ==
* [[लगातार (कंप्यूटर प्रोग्रामिंग)]]
* [[लगातार (कंप्यूटर प्रोग्रामिंग)|निरंतर (कंप्यूटर प्रोग्रामिंग)]]
* वैश्विक चर
* वैश्विक चर
* [[स्थैतिक विधि]]
* [[स्थैतिक विधि]]
Line 84: Line 84:
{{refend}}
{{refend}}


{{Memory management navbox}}
{{DEFAULTSORT:Static Memory Allocation}}
 
<!--Categories-->
{{DEFAULTSORT:Static Memory Allocation}}[[Category: स्मृति प्रबंधन]] [[Category: चर (कंप्यूटर विज्ञान)]]
 
 


[[Category: Machine Translated Page]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Static Memory Allocation]]
[[Category:Created On 15/05/2023]]
[[Category:Collapse templates|Static Memory Allocation]]
[[Category:Created On 15/05/2023|Static Memory Allocation]]
[[Category:Lua-based templates|Static Memory Allocation]]
[[Category:Machine Translated Page|Static Memory Allocation]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists|Static Memory Allocation]]
[[Category:Pages with script errors|Static Memory Allocation]]
[[Category:Sidebars with styles needing conversion|Static Memory Allocation]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready|Static Memory Allocation]]
[[Category:Templates generating microformats|Static Memory Allocation]]
[[Category:Templates that add a tracking category|Static Memory Allocation]]
[[Category:Templates that are not mobile friendly|Static Memory Allocation]]
[[Category:Templates that generate short descriptions|Static Memory Allocation]]
[[Category:Templates using TemplateData|Static Memory Allocation]]
[[Category:Wikipedia metatemplates|Static Memory Allocation]]
[[Category:चर (कंप्यूटर विज्ञान)|Static Memory Allocation]]
[[Category:स्मृति प्रबंधन|Static Memory Allocation]]

Latest revision as of 16:17, 30 October 2023

कंप्यूटर प्रोग्रामिंग में, स्थैतिक चर (प्रोग्रामिंग) है जो "स्थैतिक रूप " से आवंटित किया गया है, जिसका अर्थ है कि इसका जीवनकाल (या सीमा) कार्यक्रम का संपूर्ण भाग है। यह अल्पकालिक स्वचालित चर के विपरीत है, जिसका भंडारण स्टैक आवंटित एवं कॉल स्टैक पर विस्थापित किया गया है, एवं वस्तु (कंप्यूटर विज्ञान) के विपरीत, जिसका भंडारण गतिशील रूप से आवंटित किया जाता है एवं हीप मेमोरी में विस्थापित किया जाता है।

चर जीवनकाल क्षेत्र (कंप्यूटर विज्ञान) (जहां चर का उपयोग किया जा सकता है) के विपरीत है: वैश्विक एवं स्थानीय परिधि को संदर्भित करता है, जीवनकाल नहीं, किन्तु स्थान प्रायः जीवनकाल का अर्थ है। कई भाषाओं में, वैश्विक चर सदैव स्थैतिक होते हैं, किन्तु कुछ भाषाओं में वे गतिशील होते हैं, जबकि स्थानीय चर सामान्यतः स्वचालित होते हैं, किन्तु स्थैतिक हो सकते हैं।

सामान्य रूप में,स्थैतिक मेमोरी आवंटन संकलन समय पर मेमोरी का आवंटन होता है, संबंधित प्रोग्राम के निष्पादित होने से पूर्व, डायनेमिक मेमोरी आवंटन या स्वचालित मेमोरी आवंटन के विपरीत जहां मेमोरी को रन टाइम (प्रोग्राम जीवनचक्र चरण) में आवश्यकतानुसार आवंटित किया जाता है।[1]


इतिहास

स्थैतिक चर कम से कम ऐल्गॉल 60 (1960) तक दिनांकित होते हैं, जहाँ उन्हें स्वयं के चर के रूप में जाना जाता है।

घोषणा को अतिरिक्त घोषणाकर्ता स्वयं के साथ चिह्नित किया जा सकता है। इसका निम्न प्रभाव है, ब्लॉक में प्रवेश करने पर, स्वयं मात्रा के मान उनके मूल्यों से अपरिवर्तित रहेंगे, अंतिम निकास, जबकि घोषित चर के मान जो स्वयं के साथ चिह्नित नहीं हैं, अपरिभाषित हैं।

— ऐल्गॉल 60 पर संशोधित रिपोर्ट, खंड "5 में घोषणाएं", पी-14 हैं।

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

इन चरों को संदर्भित करने के लिए स्थैतिक शब्द का उपयोग कम से कम बीसीपीएल (1966) तक होता है, एवं सी प्रोग्रामिंग भाषा द्वारा लोकप्रिय किया गया है, जो बीसीपीएल से अत्यधिक प्रभावित था। बीसीपीएल परिभाषा पढ़ती है:

(1) स्टेटिक डेटा आइटम:
वे डेटा आइटम जिनकी सीमा प्रोग्राम के निष्पादन समय तक रहती है; इस प्रकार के डेटा आइटम में निरंतर अंतराल दिखाई देते हैं। वैश्विक घोषणा में या कोलन द्वारा निर्धारित लेबल के रूप में प्रत्येक स्थैतिक डेटा आइटम को या तो फ़ंक्शन या नियमित परिभाषा में घोषित किया जाना चाहिए।

— बीसीपीएल संदर्भ नियमावली, 7.2 अंतरिक्ष आवंटन और डेटा क्षेत्र की सीमा

ध्यान दें कि बीसीपीएल ने गतिशील डेटा आइटम को परिभाषित किया है जिसे अब स्वचालित चर (स्थानीय, स्टैक-आवंटित) कहा जाता है, समूह-आवंटित वस्तुओं के लिए नहीं, जो कि गतिशील आवंटन शब्द का वर्तमान उपयोग है।

static C एवं संबंधित भाषाओं में स्थैतिक चर एवं अन्य अवधारणाओं दोनों के लिए कीवर्ड का उपयोग किया जाता है।

संबोधित करना

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

क्षेत्र

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

उदाहरण

सी में स्थैतिक स्थानीय चर का उदाहरण:

#include <stdio.h>

void Func() {
  static int x = 0;
  // |x| is initialized only once across five calls of |Func| and the variable
  // will get incremented five times after these calls. The final value of |x|
  // will be 5.
  x++;
  printf("%d\n", x);  // outputs the value of |x|
}

int main() {
  Func();  // prints 1
  Func();  // prints 2
  Func();  // prints 3
  Func();  // prints 4
  Func();  // prints 5

  return 0;
}


वस्तु-उन्मुख प्रोग्रामिंग

वस्तु ओरिएंटेड प्रोग्रामिंग में, [[स्थैतिक सदस्य चर]] की अवधारणा भी होती है, जो कि स्थैतिक रूप से परिभाषित वर्ग का वर्ग चर होता है, अर्थात, किसी दिए गए वर्ग का सदस्य चर जो सभी वर्ग उदाहरण में विचार किया जाता है, एवं इन वस्तुओं के सदस्य चर के रूप में पहुँचा जा सकता है। गतिशील रूप से परिभाषित वर्ग का वर्ग चर, उन भाषाओं में जहाँ कक्षाओं को रन टाइम पर परिभाषित किया जा सकता है, तब आवंटित किया जाता है जब वर्ग परिभाषित होता है एवं स्थैतिक नहीं होता है।

संकलन-समय पर ज्ञात वस्तु स्थैतिकांक, जैसे कि तार शाब्दिक, सामान्यतः स्थैतिक रूप से आवंटित किए जाते हैं। वस्तु-ओरिएंटेड प्रोग्रामिंग में, कक्षाओं के आभासी विधि तालिका सामान्यतः स्थैतिक आवंटित किए जाते हैं। स्थाई रूप से परिभाषित मूल्य वैश्विक चर भी हो सकता है, यह सुनिश्चित करने के लिए अपरिवर्तनीय वस्तु मूल्य का उपयोग स्थैतिकता के लिए किया जाता है।

यह भी देखें

टिप्पणियाँ

  1. Jack Rons. "What is static memory allocation and dynamic memory allocation?". MeritHub [An Institute of Career Development]. Retrieved 2011-06-16. The compiler allocates required memory space for a declared variable. By using the addressof operator, the reserved address is obtained and this address may be assigned to a pointer variable. Since most of the declared variables have static memory, this way of assigning pointer value to a pointer variable is known as static memory allocation. Memory is assigned during compilation time.


संदर्भ