Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C भाषा में वेरिएबल के लाइफटाइम (जीवनकाल) को समझाना

स्टोरेज क्लासेस वेरिएबल्स के स्कोप, लाइफटाइम और बाइंडिंग को निर्दिष्ट करते हैं।

एक वेरिएबल को पूरी तरह से परिभाषित करने के लिए, न केवल उसका 'टाइप' बल्कि उसका स्टोरेज क्लास भी बताना आवश्यक है।

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

स्टोरेज क्लास हमें निम्नलिखित कारक बताता है:

  • वेरिएबल कहां स्टोर होता है (मेमोरी या CPU रजिस्टर में)?
  • यदि कुछ इनिशियलाइज़ नहीं किया गया तो वेरिएबल का प्रारंभिक मान क्या होगा?
  • वेरिएबल का स्कोप क्या है (इसे कहां एक्सेस किया जा सकता है)?
  • वेरिएबल का जीवन क्या है?

लाइफटाइम (जीवनकाल)

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

C भाषा में, एक वेरिएबल का ऑटोमैटिक, स्टैटिक या डायनामिक लाइफटाइम हो सकता है।

  • ऑटोमैटिक - ऑटोमैटिक लाइफटाइम वाले वेरिएबल हर बार बनाए जाते हैं जब उनका डिक्लेरेशन एनकाउंटर होता है और नष्ट हो जाते हैं जब उनके ब्लॉक एग्जिट होते हैं।
  • स्टैटिक - वेरिएबल पहली बार डिक्लेरेशन निष्पादित होने पर बनाया जाता है। यह नष्ट होता है जब निष्पादन रुकता/समाप्त होता है।
  • डायनामिक - वेरिएबल की मेमोरी मेमोरी मैनेजमेंट फंक्शन्स के माध्यम से आवंटित और डी-आवंटित की जाती है।

स्टोरेज क्लासेस

C भाषा में चार स्टोरेज क्लासेस हैं:

स्टोरेज क्लास स्टोरेज एरिया डिफ़ॉल्ट प्रारंभिक मान लाइफटाइम स्कोप कीवर्ड
ऑटोमैटिक मेमोरी गार्बेज मान कंट्रोल ब्लॉक में रहने तक लोकल auto
रजिस्टर CPU रजिस्टर गार्बेज मान कंट्रोल ब्लॉक में रहने तक लोकल register
स्टैटिक मेमोरी शून्य फंक्शन कॉल्स के बीच मान लोकल static
एक्सटर्नल मेमोरी गार्बेज मान पूरे प्रोग्राम निष्पादन के दौरान ग्लोबल extern

उदाहरण: ऑटोमैटिक स्टोरेज क्लास

#include <stdio.h>

main() {
    auto int i = 1;
    {
        auto int i = 2;
        {
            auto int i = 3;
            printf("%d", i);
        }
        printf("%d", i);
    }
    printf("%d", i);
}

आउटपुट

3 2 1

उदाहरण: एक्सटर्नल स्टोरेज क्लास

#include <stdio.h>

extern int i = 1; /* यह 'i' पूरे प्रोग्राम में उपलब्ध है */

main() {
    int i = 3; /* यह 'i' केवल main में उपलब्ध है */
    printf("%d", i);
    fun();
}

fun() {
    printf("%d", i);
}

आउटपुट

3 1
  1. C भाषा में एल्स-इफ लैडर स्टेटमेंट समझें C भाषा में एल्स-इफ लैडर स्टेटमेंट समझें

    यह मल्टी-वे डिसीजन लिखने का सबसे सामान्य तरीका है। सिंटैक्स नीचे दिए गए सिंटैक्स को देखें: if (condition1) stmt1; else if (condition2) stmt2; // ... else if (condition_n) stmt_n; else stmt_x; एल्गोरिदम नीचे दिए गए एल्गोरिदम को देखें: b) तो c सबसे बड़ा प्रिंट करें iv. अन्यथा d सबसे बड़ा प्

  1. C भाषा में नेस्टेड इफ-एल्स स्टेटमेंट समझें C भाषा में नेस्टेड इफ-एल्स स्टेटमेंट समझें

    नेस्टेड इफ एक इफ स्टेटमेंट है जो या तो इफ (या) एल्स का ऑब्जेक्ट है। इफ को दूसरे इफ (या) एल्स के अंदर रखा जाता है। सिंटैक्स नीचे दिए गए सिंटैक्स को देखें: if (condition1) { if (condition2) stmt1; else stmt2; } else { if (condition3) stmt3; else stmt4;

  1. C भाषा में  सिंपल इफ  स्टेटमेंट समझें C भाषा में 'सिंपल इफ' स्टेटमेंट समझें

    इफ कीवर्ड का उपयोग स्टेटमेंट्स के एक सेट को निष्पादित करने के लिए किया जाता है जब लॉजिकल कंडीशन ट्रू होती है। सिंटैक्स सिंटैक्स नीचे दिया गया है: if (condition) { // स्टेटमेंट(s) } सिंपल इफ स्टेटमेंट का कामकाज इफ ब्लॉक के अंदर के स्टेटमेंट्स केवल तभी निष्पादित होते हैं जब कंडीशन ट्रू होती