কোনো ভ্যারিয়েবল ডিক্লেয়ার করার পরে যে সীমার মধ্যে তা ব্যবহার করা যায়, তাকে ঐ ভ্যারিয়বলের স্কোপ বলে ।
কোনো ভ্যারিয়েবলকে তার স্কোপের বাইরে ব্যবহার করতে চাইলে প্রোগ্রাম এ কম্পাইলের সময় একটি এরর দেয় । নিচের কোডটি লক্ষ্য করোঃ
1#include <stdio.h>
2
3void myFunction(){
4 printf("Value of x: %d", x);
5}
6
7int main(){
8 int x = 10;
9 myFunction();
10 return 0;
11}
12এখানে লাইন ৮ এ যে ভ্যারিয়েবল ডিক্লেয়ার করা হয়েছে, তা একটি লোকাল স্কোপ ভ্যারিয়েবল । অর্থাৎ, যেই ফাংশনের মধ্যে ডিক্লেয়ার করা হয়েছে কেবলমাত্র সেই ফাংশনের মধ্যে ভ্যারিয়েবলটি অ্যাক্সেস করা যাবে । তাই আমরা ফাংশনের বাইরে কে অ্যাক্সেস করতে পারবো না । কিন্তু যদি আমরা কে গ্লোবাল স্কোপ এ ডিক্লেয়ার করি, তখন এই ফাংশনটি কম্পাইল হবে ।
1#include <stdio.h>
2
3int x = 10; // this one is global scope variable
4
5void myFunction(){
6 printf("Value of x: %d", x);
7}
8
9int main(){
10 myFunction();
11 return 0;
12}
13এবার প্রোগ্রামটি ঠিকঠাক কাজ করবে । কারণ এখানে গ্লোবাল স্কোপ এ ডিক্লেয়ার করা হয়েছে । তাই সকল ফাংশন থেকে একে ব্যবহার করা যাবে ।
1#include <stdio.h>
2
3int x = 10; // this one is global scope variable
4
5void myFunction(){
6 int x = 5;
7 printf("Value of x from myFunction: %d\n", x);
8}
9
10int main(){
11 printf("Value of x from main: %d\n", x);
12 myFunction();
13 return 0;
14}
15Value of x from main: 10
Value of x from myFunction: 5এখানে, এর লোকাল স্কোপ এ কোনো নামের ভ্যারিয়েবল নেই । তাই যখন কে ব্যবহার করার চেষ্টা করা হয়েছে, সেটি গ্লোবাল কে ব্যবহার করেছে । অপরদিকে, এর ভেতরে একটি লোকাল আছে, তাই সেটি গ্লোবাল ভ্যারিয়েবলটি ব্যবহার না করে লোকাল টিকে ব্যবহার করেছে ।
কনফিউশন এড়াতে, একই নামের গ্লোবাল ও লোকাল ভ্যারিয়েবল ব্যবহার উচিত নয় ।
