वैश्विक दायरा
वैश्विक दायरा निर्दिष्ट करता है कि ब्लॉक के बाहर परिभाषित चर कार्यक्रम के अंत तक दिखाई दे रहे हैं।
उदाहरण
#include<stdio.h>
int c= 30; /* global area */
main (){
int a = 10;
printf (“a=%d, c=%d” a,c);
fun ();
}
fun (){
printf (“c=%d”,c);
} आउटपुट
a =10, c = 30 c = 30
स्थानीय दायरा
स्थानीय दायरा निर्दिष्ट करता है कि ब्लॉक के भीतर परिभाषित चर केवल उस ब्लॉक में दिखाई दे रहे हैं और ब्लॉक के बाहर अदृश्य हैं।
किसी ब्लॉक या फ़ंक्शन (स्थानीय) में घोषित चर उस ब्लॉक के भीतर पहुंच योग्य होते हैं और इसके बाहर मौजूद नहीं होते हैं।
उदाहरण
#include<stdio.h>
main (){
int i = 1;// local scope
printf ("%d",i);
}
{
int j=2; //local scope
printf("%d",j);
}
} आउटपुट
1 2
भले ही वेरिएबल्स को उनके संबंधित ब्लॉक में और एक ही नाम से फिर से घोषित किया गया हो, उन्हें अलग तरह से माना जाता है।
उदाहरण
#include<stdio.h>
main (){
{
int i = 1; //variable with same name
printf ("%d",i);
}
{
int i =2; // variable with same name
printf ("%d",i);
}
} आउटपुट
1 2
बाहरी ब्लॉक के समान नाम वाले ब्लॉक के भीतर वेरिएबल्स का पुनर्घोषणा आंतरिक ब्लॉक को निष्पादित करते समय बाहरी ब्लॉक चर को मास्क करता है।
उदाहरण
#include<stdio.h>
main (){
int i = 1;{
int i = 2;
printf (“%d”,i);
}
} आउटपुट
2
इनर ब्लॉक के बाहर घोषित वेरिएबल नेस्टेड ब्लॉक्स तक पहुंच योग्य हैं, बशर्ते ये वेरिएबल इनर ब्लॉक के भीतर घोषित न हों।
उदाहरण
#include<stdio.h>
main (){
int i = 1;{
int j = 2;
printf ("%d",j);
printf ("%d",i);
}
} आउटपुट
2 1