C जैसी प्रोग्रामिंग लैंग्वेज में, स्टोरेज क्लासेस स्कोप, विजिबिलिटी और लाइफटाइम वेरिएबल्स को परिभाषित करने में महत्वपूर्ण भूमिका निभाते हैं। उपलब्ध विभिन्न भंडारण वर्गों को समझकर, डेवलपर्स मेमोरी उपयोग को अनुकूलित कर सकते हैं, चर दृढ़ता का प्रबंधन कर सकते हैं और चर पहुंच को नियंत्रित कर सकते हैं। इस लेख में, हम C में स्टोरेज क्लासेस की दुनिया में तल्लीन होंगे और उनके विभिन्न प्रकारों और अनुप्रयोगों का पता लगाएंगे।
![]() |
storage classes in c in hindi |
परिचय
C में प्रोग्राम लिखते समय, स्टोरेज क्लासेस की अच्छी समझ होना आवश्यक है। ये वर्ग निर्धारित करते हैं कि स्मृति में चर कैसे संग्रहीत किए जाते हैं और वे कार्यक्रम के निष्पादन के दौरान कैसे व्यवहार करते हैं। एक चर के लिए एक उपयुक्त भंडारण वर्ग का चयन करके, डेवलपर्स इसके जीवनकाल, कार्यक्षेत्र और आरंभिक व्यवहार को नियंत्रित कर सकते हैं।
storage class in c in hindi
सी में, भंडारण वर्ग चर की विशेषताओं और गुणों को परिभाषित करते हैं। वे निर्धारित करते हैं कि एक चर कहाँ और कैसे संग्रहीत किया जाता है, इसे कैसे आरंभ किया जाता है, और कार्यक्रम के निष्पादन के दौरान यह कैसे व्यवहार करता है। C में चार प्राथमिक भंडारण वर्ग हैं: स्वचालित, रजिस्टर, स्थिर और बाहरी।
स्वचालित संग्रहण वर्ग
स्वत: भंडारण वर्ग कार्यों या ब्लॉकों के अंदर परिभाषित स्थानीय चर के लिए डिफ़ॉल्ट वर्ग है। किसी फ़ंक्शन या ब्लॉक में प्रवेश करने और बाहर निकलने पर नष्ट होने पर स्वचालित भंडारण वाले चर बनाए जाते हैं। वे आम तौर पर स्टैक मेमोरी में संग्रहीत होते हैं, और उनके मान फ़ंक्शन कॉल में संरक्षित नहीं होते हैं।
रजिस्टर स्टोरेज क्लास
रजिस्टर स्टोरेज क्लास का इस्तेमाल तेज पहुंच के लिए सीपीयू रजिस्टर में वेरिएबल को स्टोर करने के लिए कंपाइलर को सुझाव देने के लिए किया जाता है। हालाँकि, एक रजिस्टर को एक चर आवंटित करने का निर्णय अंततः संकलक के पास रहता है। रजिस्टर चर संख्या में सीमित हैं और आमतौर पर कार्यक्रम के प्रदर्शन को बेहतर बनाने के लिए अक्सर उपयोग किए जाने वाले चर के लिए उपयोग किए जाते हैं।
स्थैतिक भंडारण वर्ग
स्टैटिक स्टोरेज क्लास का उपयोग वेरिएबल्स को घोषित करने के लिए किया जाता है जो कई फ़ंक्शन कॉल में उनके मान को बनाए रखते हैं। स्थैतिक चर केवल एक बार आरंभीकृत होते हैं और कार्यक्रम के निष्पादन के दौरान उनके मूल्यों को बनाए रखते हैं। वे मेमोरी के डेटा सेगमेंट में संग्रहीत होते हैं और उपयोगी होते हैं जब चर को फ़ंक्शन कॉल के बीच अपने मान बनाए रखने की आवश्यकता होती है।
बाहरी संग्रहण वर्ग
एक्सटर्नल स्टोरेज क्लास का उपयोग वेरिएबल्स को परिभाषित करने के लिए किया जाता है जिसे एक प्रोग्राम में कई सोर्स फाइल्स में एक्सेस किया जा सकता है। बाहरी चर किसी भी फ़ंक्शन के बाहर घोषित किए जाते हैं, जिससे वे विश्व स्तर पर सुलभ हो जाते हैं। वे आमतौर पर किसी प्रोग्राम के विभिन्न भागों के बीच डेटा साझा करने के लिए उपयोग किए जाते हैं।
भंडारण वर्गों के उदाहरण और स्पष्टीकरण
विभिन्न भंडारण वर्गों को बेहतर ढंग से समझने के लिए, आइए कुछ उदाहरण और उनकी व्याख्या देखें।
स्वचालित संग्रहण वर्ग के उदाहरण
#include <stdio.h>
void exampleFunction() {
int count = 0; // Automatic storage class
count++;
printf("Count: %d\n", count);
}
int main() {
exampleFunction();
exampleFunction();
return 0;
}
इस उदाहरण में, चरगिनती करना फ़ंक्शन के अंदर स्वचालित संग्रहण वर्ग के साथ घोषित किया गया हैउदाहरण समारोह (). हर बार जब फ़ंक्शन को कॉल किया जाता है, तो इसे 0 से प्रारंभ किया जाता है, और इसका मान फ़ंक्शन के दायरे में ही संरक्षित होता है। नतीजतन, आउटपुट होगा:
Count: 1
Count: 1
रजिस्टर स्टोरेज क्लास के उदाहरण
#include <stdio.h>
void exampleFunction() {
register int i; // Register storage class
for (i = 1; i <= 5; i++) {
printf("%d ", i);
}
printf("\n");
}
int main() {
exampleFunction();
return 0;
}
इस उदाहरण में, चरमैं रजिस्टर स्टोरेज क्लास के साथ घोषित किया गया है। हालांकि कंपाइलर का एक रजिस्टर आवंटित करने में अंतिम कहना है, रजिस्टर स्टोरेज क्लास का उपयोग करने से पता चलता है कि चर को तेज पहुंच के लिए एक रजिस्टर में संग्रहित किया जाना चाहिए। आउटपुट होगा:
1 2 3 4 5
static storage class in c in hindi
#include <stdio.h>
void exampleFunction() {
static int count = 0; // Static storage class
count++;
printf("Count: %d\n", count);
}
int main() {
exampleFunction();
exampleFunction();
return 0;
}
इस उदाहरण में, चरगिनती करना फ़ंक्शन के अंदर स्थिर संग्रहण वर्ग के साथ घोषित किया गया हैउदाहरण समारोह (). यह फ़ंक्शन कॉल के बीच अपना मान बनाए रखता है और केवल एक बार प्रारंभ होता है। आउटपुट होगा:
Count: 1
Count: 2
extern storage class in c in hindi
// file1.c
#include <stdio.h>
int globalVariable = 10; // External storage class
void display() {
printf("Global variable: %d\n", globalVariable);
}
// file2.c
#include <stdio.h>
extern int globalVariable; // External storage class
void modify() {
globalVariable += 5;
}
int main() {
modify();
display();
return 0;
}
इस उदाहरण में, चरवैश्विक चर में बाहरी संग्रहण वर्ग के साथ घोषित किया गया हैफ़ाइल1.सी. इसे एक्सेस और संशोधित किया गया हैफ़ाइल2.सी का उपयोगबाहरी कीवर्ड। आउटपुट होगा:
Global variable: 15
भंडारण वर्गों की तुलना और उपयोग
प्रत्येक भंडारण वर्ग का अपना उद्देश्य और उपयोग होता है। भंडारण वर्ग का चुनाव चर के वांछित व्यवहार और आवश्यकताओं पर निर्भर करता है। यहाँ भंडारण वर्गों की तुलना है:
भंडारण वर्ग | जीवनभर | दायरा | प्रारंभ | सरल उपयोग |
स्वचालित | समारोह/ब्लॉक | स्थानीय | अनिर्दिष्ट (कचरा मूल्य) | स्थानीय |
पंजीकरण करवाना | समारोह/ब्लॉक | स्थानीय | अनिर्दिष्ट (कचरा मूल्य) | स्थानीय |
स्थिर | कार्यक्रम | स्थानीय/वैश्विक | एक बार प्रारंभ किया गया (0 यदि स्पष्ट रूप से प्रारंभ नहीं किया गया है) | स्थानीय/वैश्विक |
बाहरी | कार्यक्रम | वैश्विक | एक बार प्रारंभ किया गया (0 यदि स्पष्ट रूप से प्रारंभ नहीं किया गया है) | वैश्विक |
निष्कर्ष
कुशल और रखरखाव योग्य कोड लिखने के लिए C में स्टोरेज क्लासेस को समझना महत्वपूर्ण है। वेरिएबल्स के लिए उपयुक्त स्टोरेज क्लास का चयन करके, डेवलपर्स मेमोरी उपयोग, वेरिएबल दृढ़ता और पहुंच को नियंत्रित कर सकते हैं। चाहे वह स्थानीय चर के लिए स्वचालित भंडारण वर्ग हो, तेज पहुंच के लिए रजिस्टर भंडारण वर्ग, मूल्यों को संरक्षित करने के लिए स्थिर भंडारण वर्ग, या वैश्विक पहुंच के लिए बाहरी भंडारण वर्ग, प्रत्येक वर्ग एक अलग उद्देश्य पूरा करता है। भंडारण कक्षाओं में महारत हासिल करके, प्रोग्रामर अपने सी प्रोग्राम को अनुकूलित कर सकते हैं और अधिक कुशल और विश्वसनीय सॉफ्टवेयर बना सकते हैं।
अक्सर पूछे जाने वाले प्रश्न
क्या हम C में वेरिएबल के स्टोरेज क्लास को बदल सकते हैं?
नहीं, एक बार एक विशेष भंडारण वर्ग के साथ एक चर घोषित किया जाता है, इसे अपने जीवनकाल के दौरान बदला नहीं जा सकता।
सी में सभी प्रकार के डेटा के लिए भंडारण वर्ग लागू होते हैं?
हाँ, C में सभी प्रकार के डेटा के वेरिएबल्स पर स्टोरेज क्लासेस लागू की जा सकती हैं।
क्या स्टैटिक स्टोरेज क्लास के साथ वेरिएबल्स को स्पष्ट रूप से इनिशियलाइज़ करना आवश्यक है?
नहीं, स्पष्ट रूप से प्रारंभ नहीं होने पर स्थैतिक भंडारण वर्ग वाले चर स्वचालित रूप से 0 पर प्रारंभ हो जाते हैं।
क्या हमारे पास स्वचालित संग्रहण वर्ग के साथ एक वैश्विक चर हो सकता है?
नहीं, वैश्विक चर में हमेशा बाह्य संग्रहण वर्ग होता है।
क्या स्टोरेज क्लासेस केवल C प्रोग्रामिंग लैंग्वेज के लिए विशिष्ट हैं?
भंडारण कक्षाएं सी प्रोग्रामिंग भाषा के लिए विशिष्ट हैं और अन्य प्रोग्रामिंग भाषाओं में अलग-अलग कार्यान्वयन या शब्दार्थ हो सकते हैं।