Storage Class Specifier in Hindi
/ BCA / Programming with C and CPP
Storage Class Specifier in C Explained
Storage Class Specifier in Hindi
Introduction to Storage Class Specifier in Hindi
C language में जब हम कोई variable declare करते हैं, तो हम उसके साथ यह तय कर सकते हैं कि वह variable memory में कैसे स्टोर होगा, कितने समय तक स्टोर रहेगा और कहां से access किया जा सकता है। यह सब control करने के लिए हम "Storage Class Specifier" का उपयोग करते हैं। Storage Class Specifier यह बताता है कि variable की scope (सीमा), lifetime (आयु) और storage location (संग्रह स्थान) क्या होगी।
जब हम variable declare करते हैं, तो उसके साथ उसकी storage class भी internally जुड़ी होती है, जिससे कंपाइलर को यह समझ आता है कि उस variable को कब और कहां allocate करना है और कब delete करना है।
Types of Storage Class Specifiers in Hindi
C language में मुख्यतः चार प्रकार के Storage Class Specifier होते हैं:
- auto
- register
- static
- extern
1. auto Storage Class in Hindi
- यह default storage class होती है जब हम किसी variable को function के अंदर declare करते हैं।
- इसका scope केवल उस block तक होता है जिसमें उसे declare किया गया है।
- Memory allocation runtime पर होती है और block के खत्म होते ही variable destroy हो जाता है।
- Function के बाहर इसका प्रयोग नहीं किया जा सकता।
void myFunction() {
auto int x = 10;
printf("%d", x);
}
2. register Storage Class in Hindi
- यह suggest करता है कि variable को CPU register में store किया जाए ताकि access fast हो।
- यह भी block scope रखता है और function के बाहर declare नहीं किया जा सकता।
- इसके variable का address नहीं लिया जा सकता क्योंकि यह memory में नहीं होता।
void myFunction() {
register int count = 0;
printf("%d", count);
}
3. static Storage Class in Hindi
- यह variable की lifetime को पूरा program duration तक बढ़ा देता है।
- Function के अंदर declare होने पर यह value को preserve करता है यानी हर बार function call पर variable reset नहीं होता।
- Global scope में static variable पूरी file में ही access होता है, दूसरे files में नहीं।
void myFunction() {
static int x = 0;
x++;
printf("%d", x);
}
अगर यह function तीन बार call होगा तो output होगा: 1 2 3
4. extern Storage Class in Hindi
- इसका उपयोग तब किया जाता है जब हम किसी variable को एक file में declare करके उसे दूसरी file में access करना चाहते हैं।
- यह variable की memory को दूसरे file में ढूंढ़ता है और वहां से access करता है।
- Program में एक ही जगह actual definition होगी और बाकी जगह extern से reference लिया जाएगा।
// file1.c
int num = 10;
// file2.c
extern int num;
printf("%d", num);
Scope and Lifetime of Storage Classes in Hindi
नीचे एक table के माध्यम से समझते हैं कि किस storage class की क्या scope और lifetime होती है:
| Storage Class | Scope (सीमा) | Lifetime (आयु) | Storage Location |
|---|---|---|---|
| auto | Local block | Block खत्म होने तक | Memory (RAM) |
| register | Local block | Block खत्म होने तक | CPU Register (अगर उपलब्ध हो) |
| static | Local या Global (File scope) | Program खत्म होने तक | Memory (RAM) |
| extern | Global (Across Files) | Program खत्म होने तक | Memory (दूसरी फाइल में) |
Difference Between Storage Class Specifiers in Hindi
नीचे दिए गए points की मदद से आप सभी storage class specifiers के बीच के मुख्य अंतर को आसानी से समझ सकते हैं:
- auto: यह default होती है, memory block के अंत में free हो जाती है।
- register: यह fast access के लिए CPU register को उपयोग में लाती है, लेकिन हम इसका address नहीं ले सकते।
- static: यह variable की value को preserve करता है और बार-बार function call होने पर भी वह reset नहीं होती।
- extern: इसका उपयोग दूसरे files से variable को access करने के लिए किया जाता है।
Beginner Friendly Explanation of Use Case
- अगर आप किसी function के अंदर temporary calculation कर रहे हैं, तो auto best है।
- अगर आपको fast loop operation करना है, तो register use करें।
- अगर आप function में किसी value को preserve करना चाहते हैं, जैसे counter, तो static use करें।
- अगर आपको एक ही variable को कई files में use करना है, तो extern सबसे सही विकल्प है।
हर storage class का अपना एक विशेष उपयोग है। सही storage class का उपयोग करने से न केवल memory की efficiency बढ़ती है बल्कि program का performance भी बेहतर होता है।