Complete Information Of Storage Classes In C In Hindi
Storage Classes In C In Hindi
स्टोरेज क्लास यह बताता है कि हम वेरिएबल या फंक्शन को कहाँ (scope) तक और कब तक (lifetime ) access कर सकते हैं या उसकी वैल्यू ले सकते हैं | इसे वेरिएबल डिफाइन करते समय डाटा टाइप से पहले लिखते हैं । C में चार तरह के स्टोरेज क्लास होते हैं ।
- auto – ये स्टोरेज क्लास सभी लोकल वेरिएबल पर अप्लाई होता हैं । यदि वेरिएबल डिफाइन करते समय स्टोरेज क्लास नहीं लिखा तो C में उस वेरिएबल का स्टोरेज क्लास अपने आप से ऑटो हो जायेगा । इन ऑटो स्टोरेज क्लास वाले वेरिएबल का स्कोप उसी {} के भीतर तक ही होता है जहां इन वेरिएबल को डिफाइन किया जाता है ।Example
auto int age;
in age - register – जिन वेरिएबल को रजिस्टर स्टोरीज क्लास में डिफाइन किया जाता है उन्हें RAM के बजाय रजिस्टर (जो की सामान्य रूप से एक करैक्टर के बराबर होती है) में स्टोर किया जाता है इसका मतलब कि किसी वेरिएबल की स्टोरेज साइज उतनी ही होगी जितनी रजिस्टर की मैक्स वैल्यू होती है | इसमें & ओपेरटर को स्टोर नहीं कर सकते | रजिस्टर स्टोरेज क्लास उन्ही वेरिएबल उन्ही को डिफाइन किया जाता है जिनकी वैल्यू बार बार करना पड़ता है जैसे counter.Example
register int age;यहां पर ध्यान देने की बात यह है जब किसी वेरिएबल को रजिस्टर डिफाइन किया जाता हैं तो इसका अर्थ यह नहीं है कि उस वेरिएबल को रजिस्टर में ही स्टोर किया जायेगा या नहीं यह उस कंप्यूटर के हार्डवेयर और उसके ऑपरेटिंग सिस्टम पर निर्भर करता है । - static – static class कंपाइलर को निर्देश देता है कि इस वेरिएबल को पूरे प्रोग्राम टाइम में एक्टिव रखें ना कि जैसे वेरिएबल की जब भी कॉल हो (comes into scope) उसको create और initialize करें और कॉल ख़तम (goes out of scope)
होते ही destroy करें |इसे अगर सीधे शब्दों में कहें तो local variable और static variable में इतना अंतर होता है कि local variable को जितनी बार कॉल किया जाता है उन्हें हर बार क्रिएट किया जाता है जबकि static variable अपना स्टेटस को सेव रखते हैं और अगली बार वहीं से शुरू करते हैं |वास्तव में जब हम local variable इस्तेमाल करते हैं तो मेमोरी allot करते समय उस वेरिएबल की मेमोरी भी उस फंक्शन के साथ ही allot होती है परंतु जब हम tatic variable डिफाइन करते हैं तो उस static class वेरिएबल की वैल्यू एक शेयर्ड प्लेस पर डिफाइन होती है । जिसको सभी फंक्शन एक्सेस कर सकते हैं ।#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 %dn", i, count); }
output
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
- extern – extern keyword का इस्तेमाल करके हम एक global वेरिएबल डिफाइन कर सकते हैं जिसको हम किसी दूसरी फाइल में भी इस्तेमाल कर सकते हैं । जब हम कोई global वेरिएबल डिफाइन करते हैं तो वह उस समय न डिफाइन होकर अलग फाइल में डिफाइन होता है और उस फाइल में सिर्फ reference ही return होता है जिसे हम बाद में किसी दूसरी फाइल से भी एक्सेस कर सकते हैं ।ExampleFile – one.c
#include <stdio.h> int count ; extern void write_extern(); main() { count = 5; write_extern(); } file - two.c
#include <stdio.h> extern int count; void write_extern(void) { printf("count is %dn", count); } दोनों फाइल को कंपाइल करके रन करने पर यह आउटपुट मिलता है |
count is 5