Static Storage Class
Static Storage Class
हम जिन Variables
को Static Class में रखते हैं उस Variables
में Store किये गए मान प्रोग्राम के अंत तक Memory
में रहते हैं | किसी
Variable
को Static Declare करने के लिए हम “C” के static Keyword का प्रयोग करते हैं |
जैसे
static
int value ; एक static class में Declare
Variable , Local भी हो सकता है और Global भी |
हम किसी भी Variable
को Static Declare कर सकते हैं |
एक
Local
Variable के रूप में एक Static Variable , Automatic Class के Variable की तरह ही काम करता है |
लेकिन फिर भी auto व static प्रकार के Variables में
कुछ अंतर होता है | static
प्रकार के Variable की प्रकृति को अच्छी तरह
से समझने के लिए हम नीचें दो प्रोग्राम बना रहें हैं |
Program
//Program 1
#include<stdio.h>
main()
{
int j;
auto int k=0;
for(j=0; j<3; j++)
{
k=k+1;
printf("\n %d",k);
}
getch();
}
//Program 2
#include<stdio.h>
main()
{
int j;
static int k=0;
for(j=0; j<3; j++)
{
k=k+1;
printf("\n%d",k);
}
getch();
}
हमने हमेंशा देखा
है कि जब भी किसी Loop के प्रथम Iteration
के बाद पुनः Program Control दूसरे Iteration
के लिए उस Loop में प्रवेश करता है तो Loop
के अंदर प्रयोग किये गए किसी भी Variable का
मान पुनः वही हो जाता है जो Initialize कर दिया जाता है |
जैसा कि पहले
प्रोग्राम में हुआ है | इस
पहले प्रोग्राम में k को auto प्रकार का लिया है , इसलिए जैसे ही Program Control इस
Loop के Statement Block से बाहर जाता
है, k का मान वापस 0 Initialize हो
जाता है | लेकिन जो Variable
static प्रकार की Storage class में Class
में Declare किये जाते है उन Variables
में मान Program के अंत तक रहते हैं |
यही कारण है कि
जहां प्रथम प्रोग्राम के Output में k का मान Loop के तीनों Iteration में समान आ रहा है वही दूसरे Program में Loop
के हर Iteration में k का
मान बदल रहा है | क्योंकि
Static
Variable में Store मान Program
Control के Loop से बाहर जाने के बावजूद भी
नहीं मिटता है | Program
Execution के दौरान सर्वप्रथम k का Declare
होता है साथ ही k का प्रारम्भिक मान 0
Initialize किया जाता है |
Program Control जब for Loop में प्रवेश करता है तो k=k+1;
Expression से k का मान Increment हो कर 1 हो जाता है |
Program
Control k के मान को Print करता है और Statement
Block से बाहर आ जाता है |
वापस जब दूसरे Iteration के लिए Program Control इस Statement Block में प्रवेश करता है तो वापस उसे k= K+1 Expression मिलती
है | Program Control वापस k क मान एक और बढ़ता है |
लेकिन हमने k
को इस प्रोग्राम में static Storage Class के
अंतर्गत Declare किया है इसलिए जब Program Control वापस इस Statement Block में प्रवेश करता है तो k
का पुराना मान नष्ट नहीं होता बल्कि स्थिर रहता है |
इस
Statement
से वापस 1 अंक Increment हो कर k का मान अब 2 हो जाता
है और ये क्रम तब तक चलता रहता है जब तक कि for Loop की Condition
false ना हो जाए यानी Loop Terminate ना हो
जाए |
No comments