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

सी प्रोग्राम में स्टोरेज क्लासेस

चर और डेटाटाइप की चर्चा ऊपर की गई है। अब हम देखेंगे कि कैसे चरों को इसके दायरे और दृश्यता के आधार पर वर्गीकृत किया जा सकता है।

दायरा:आम तौर पर, दायरा एक शब्द है जो एक चर के जीवनकाल को दर्शाता है। यह कब तक काम करेगा और कब नष्ट हो जाएगा।

दृश्यता :दृश्यता से पता चलता है कि चर कहाँ से दिखाई दे रहा है, हम चर का उपयोग कहाँ कर सकते हैं। एक उदाहरण के रूप में यदि हम स्थानीय चर का उपयोग करते हैं तो हम इसे किसी अन्य फ़ंक्शन या फ़ाइलों से उपयोग नहीं कर सकते हैं, इसलिए यह केवल ब्लॉक के अंदर ही दिखाई देता है।

अवरुद्ध करें :ब्लॉक को दो घुंघराले ब्रेसिज़ {…} के बीच की रेखाओं के सेट के रूप में परिभाषित किया गया है। उदाहरण के रूप में

{
   //line1
   //line2
   //line3
}

यह एक ब्लॉक है।

<वें शैली="चौड़ाई:28.7211%; पाठ-संरेखण:केंद्र;">कैसे घोषित किया गया है <वें शैली="पाठ्य-संरेखण:केंद्र; चौड़ाई:23.27%;">क्षेत्र <टीडी>
<टीडी>
Storage Class दृश्यता
auto विश्व स्तर पर
auto स्थानीय रूप से अवरुद्ध करें ब्लॉक करें
रजिस्टर करें विश्व स्तर पर
रजिस्टर करें स्थानीय रूप से अवरुद्ध करें ब्लॉक करें
स्थिर विश्व स्तर पर कार्यक्रम फ़ाइल
स्थिर स्थानीय रूप से कार्यक्रम ब्लॉक करें
extern विश्व स्तर पर कार्यक्रम कार्यक्रम
extern स्थानीय रूप से कार्यक्रम ब्लॉक करें

भंडारण वर्ग के लिए मूल सिंटैक्स:

<storage class> <datatype> variable_name;
ex. static int my_var = 0;

नोट:यदि हम variable_name; किसी भी स्टोरेज क्लास को निर्दिष्ट किए बिना, यह स्वचालित रूप से 'ऑटो' स्टोरेज क्लास होगा।

ऑटो:ऑटो स्टोरेज क्लास सभी स्थानीय वैरिएबल के लिए डिफ़ॉल्ट स्टोरेज क्लास है।

{
   int mount;
   auto int month;
}

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

पंजीकरण करें :रजिस्टर स्टोरेज क्लास का उपयोग स्थानीय वेरिएबल्स को परिभाषित करने के लिए किया जाता है जिन्हें रैम के बजाय रजिस्टर में स्टोर किया जाना चाहिए। इसका मतलब यह है कि वेरिएबल का अधिकतम आकार रजिस्टर आकार (आमतौर पर एक शब्द) के बराबर होता है और इसमें यूनरी '&' ऑपरेटर लागू नहीं हो सकता है (क्योंकि इसमें मेमोरी लोकेशन नहीं है)।

{
   register int miles;
}

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

स्थिर :स्थिर स्टोरेज क्लास कंपाइलर को प्रोग्राम के जीवन-काल के दौरान एक स्थानीय वैरिएबल को अस्तित्व में रखने के लिए निर्देश देता है, न कि हर बार इसे बनाने और नष्ट करने के लिए और इसके दायरे से बाहर हो जाता है। इसलिए, स्थानीय चर को स्थिर बनाने से वे फ़ंक्शन कॉल के बीच अपने मान बनाए रख सकते हैं।

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

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

उदाहरण कोड


#include <stdio.h>
/* function declaration */
void func(void);
static int count = 5; /* global variable */
main() {
   while(count--) {
      func();
   }
   return 0;
}
/* function definition */
void func( void ) {
   static int i = 5; /* local static variable */
   i++;
   printf("i is %d and count is %d\n", i, count);
}

आउटपुट

i is 6 and count is 4
i is 7 and count is 3
i is 8 and count is 2
i is 9 and count is 1
i is 10 and count is 0

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

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

बाहरी संशोधक का सबसे अधिक उपयोग तब किया जाता है जब दो या दो से अधिक फाइलें समान वैश्विक चर या कार्यों को साझा करती हैं जैसा कि नीचे बताया गया है।

उदाहरण कोड (main.c):

#include <stdio.h>
int count ;
extern void write_extern();
main() {
count = 5;
write_extern();
}
Example Code (support.c):
#include <stdio.h>
extern int count;
void write_extern(void) {
printf("count is %d\n", count);
}

आउटपुट

count is 5

  1. सी # में सार कक्षाएं

    C# में एक अमूर्त वर्ग में अमूर्त और गैर-सार विधियां शामिल हैं। एक वर्ग को अमूर्त वर्ग के रूप में अमूर्त घोषित किया जाता है। आप एक अमूर्त वर्ग को तत्काल नहीं कर सकते। आइए एक उदाहरण देखते हैं, जिसमें हमारे पास एक एब्स्ट्रैक्ट क्लास व्हीकल और एब्स्ट्रैक्ट मेथड डिस्प्ले ()- है। public abstract class Veh

  1. बहु-विरासत पायथन कक्षाओं में वर्ग चर कैसे कार्य करता है?

    पायथन में एक से अधिक आधार वर्गों से एक वर्ग प्राप्त किया जा सकता है। इसे एकाधिक वंशानुक्रम कहा जाता है। मल्टीपल इनहेरिटेंस में, सभी बेस क्लास की विशेषताएं व्युत्पन्न क्लास में इनहेरिट की जाती हैं। एकाधिक वंशानुक्रम के लिए वाक्य रचना एकल वंशानुक्रम के समान है। class Super1:     pass class S

  1. हम कक्षाएं क्यों बनाते हैं?

    मेरे पिछले लेख के बाद, हम शून्य का उपयोग क्यों करते हैं, मैंने सोचा कि इस प्रश्न को अन्य चीजों के लिए पूछना एक अच्छा विचार होगा जो हम मानते हैं। लाइक... हम बदसूरत कोड के सिर्फ एक GIGANT बूँद के बजाय कक्षाओं का उपयोग क्यों करते हैं? मौलिक स्तर पर, हम कोड और डेटा को तार्किक इकाइयों में व्यवस्थित कर