स्कोप नियम निम्नलिखित कारकों से संबंधित हैं:
- वेरिएबल की पहुंच (accessibility)
- वेरिएबल के अस्तित्व की अवधि
- वेरिएबल के उपयोग की सीमा
फंक्शन से संबंधित स्कोप नियम
- फंक्शन एक स्व-निहित ब्लॉक है जो एक विशेष कार्य करता है।
- फंक्शन बॉडी के भीतर घोषित वेरिएबल लोकल वेरिएबल कहलाते हैं।
- ये वेरिएबल केवल उस विशिष्ट फंक्शन के अंदर मौजूद होते हैं जो उन्हें बनाता है। वे अन्य फंक्शन और मेन फंक्शन के लिए अज्ञात होते हैं।
- लोकल वेरिएबल का अस्तित्व तब समाप्त होता है जब फंक्शन अपना कार्य पूरा करके कॉलिंग पॉइंट पर लौटता है।
उदाहरण 1: लोकल वेरिएबल्स (मान द्वारा पास)
#include <stdio.h>
void swap(int a, int b); // प्रोटोटाइप
int main() {
int a = 10, b = 20;
printf("Before swapping: a=%d, b=%d\n", a, b);
swap(a, b);
printf("After swapping: a=%d, b=%d\n", a, b);
return 0;
}
void swap(int a, int b) {
int c;
c = a;
a = b;
b = c;
// यहाँ a,b लोकल हैं, main के a,b अपरिवर्तित रहते हैं
}
आउटपुट
Before swapping: a=10, b=20 After swapping: a=10, b=20
व्याख्या: swap फंक्शन को मान द्वारा पास किया गया है, इसलिए यह मूल वेरिएबल्स की कॉपी पर काम करता है।
ग्लोबल वेरिएबल्स
- फंक्शन बॉडी के बाहर घोषित वेरिएबल ग्लोबल वेरिएबल कहलाते हैं।
- ये वेरिएबल किसी भी फंक्शन द्वारा एक्सेसिबल होते हैं।
उदाहरण 2: ग्लोबल वेरिएबल्स
#include <stdio.h>
int a = 10, b = 20; // ग्लोबल वेरिएबल्स
void swap(); // प्रोटोटाइप
int main() {
printf("Before swapping: a=%d, b=%d\n", a, b);
swap();
printf("After swapping: a=%d, b=%d\n", a, b);
return 0;
}
void swap() {
int c;
c = a;
a = b;
b = c;
// ग्लोबल a,b सीधे एक्सेस और मॉडिफाई होते हैं
}
आउटपुट
Before swapping: a=10, b=20 After swapping: a=20, b=10
स्कोप नियम सारांश
| वेरिएबल प्रकार | घोषणा स्थान | स्कोप | लाइफटाइम |
|---|---|---|---|
| लोकल | फंक्शन/ब्लॉक के अंदर | केवल उस ब्लॉक/फंक्शन में | ब्लॉक/फंक्शन निष्पादन तक |
| ग्लोबल | सभी फंक्शन के बाहर | पूरे प्रोग्राम में (सभी फाइल्स में extern के साथ) | प्रोग्राम शुरू से अंत तक |
| स्टेटिक लोकल | फंक्शन में static के साथ | केवल उस फंक्शन में | प्रोग्राम शुरू से अंत तक (मान बना रहता है) |
| फंक्शन पैरामीटर | फंक्शन परिभाषा में | केवल उस फंक्शन में | फंक्शन कॉल दौरान |
बेस्ट प्रैक्टिस
- ग्लोबल वेरिएबल्स का उपयोग कम से कम करें।
- डेटा पास करने के लिए पैरामीटर्स और रिटर्न वैल्यू का उपयोग करें।
- स्टेटिक लोकल वेरिएबल्स का उपयोग फंक्शन कॉल्स के बीच स्टेट बनाए रखने के लिए करें।