Header Ads

ad728
  • New Updates

    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

    Post Top Ad

    ad728

    Post Bottom Ad

    ad728