একটি সি প্রোগ্রামে আমরা অনেকগুলো ভেরিয়েবল অনেক জায়গায় ডিক্লেয়ার করি। কোন ভেরিয়েবলটি কোন পর্যন্ত এক্সেস করা যায় তা জানতে আমরা এখন দেখব স্কোপ্স।
আমরা যদি একটি ফাংশনে কোন ভেরিয়েবল ডিক্লেয়ার করি তাহলে মেইন ফাংশন থেকে সেই ভেরিয়েবলকে এক্সেস করা যাবে না। ভেরিয়েবলটির স্কোপ্স হচ্ছে ওই ফাংশন পর্যন্তই। ওই ফাংশনের মধ্যে যেকোন জায়গায় এক্সেস করা যাবে।
#include<stdio.h>
void func()
{
int s = 100; // একটি ভেরিয়েবল ডিক্লেয়ার করা হয়েছে। এই ভেরিয়েবল এর স্কোপ্স হচ্ছে এই ফাংশন পর্যন্ত।
}
int main()
{
printf("%d",s); // এই লাইনে এরর দিবে। কারন এখানে আমরা s ভেরিয়েবল কে এক্সেস করার চেষ্টা করছি যেটি এখানে ডিক্লেয়ার করা হয় নি।
}
সেইমভাবে মেইন ফাংশনে ডিক্লেয়ার করা কোন ভেরিয়েবল মেইন ফাংশনের বাইরে থেকে এক্সেস করা যাবে না।
#include<stdio.h>
void func()
{
printf("%d",x); // এই লাইনে এরর দিবে। x ভেরিয়েবলটি ডিক্লেয়ার করা হয়েছে মেইন ফাংশনে। মেইন ফাংশনের বাইরে থেকে এক্সেস করা যাবে না।
}
int main()
{
int x = 10;
}
একটি ভেরিয়েবল এর স্কোপ্স যে পুরো ফাংশন জুড়ে ব্যাপারটি কিন্তু এমন না। মেইন ফাংশনের মধ্যে একটি লুপের মধ্যে যদি কোন ভেরিয়েবল ডিক্লেয়ার করা হয় তাহলে সেই ভেরিয়েবলটি লুপের বাইরে থেকে এক্সেস করা যাবে না।
#include<stdio.h>
int main()
{
int x = 10; // মেইন ফাংশনের মধ্যে ভেরিয়েবল ডিক্লেয়ার করা হচ্ছে x। এটি পুরো মেইন ফাংশন জুড়ে পাওয়া যাবে।
for(int i=0;i<5;i++) // একটি রেন্ডম লুপ চালানো হচ্ছে যেটি ৫ বার চলবে।
{
int y = 20; // লুপের মধ্যে একটি ভেরিয়েবল ডিক্লেয়ার করা হচ্ছে y। এটি শুধুমাত্র লুপের মধ্যেই এক্সেস করা যাবে।
printf("%d\n",y); // লুপের মধ্যে y কে এক্সেস করছি তাই এরর আসবে না।
}
printf("%d\n",x); // মেইন ফাংশনে ডিক্লেয়ার করা x কে এক্সেস করা হচ্ছে।
printf("%d\n",y); // লুপের বাইরে y কে এক্সেস করা হচ্ছে তাই এই লাইনে এরর আসবে।
}
যদি কোন ভেরিয়েবল সব ধরনের ফাংশনের বাইরে লিখা হয় তখন সেগুলোকে বলা হয় গ্লোবাল ভেরিয়েবল। আর একটি গ্লোবাল ভেরিয়েবলকে পুরো কোডের যেকোন জায়গা থেকে এক্সেস করা যায়।
#include<stdio.h>
int x = 10; // গ্লোবাল ভেরিয়েবল ডিক্লেয়ার করা হয়েছে।
void func()
{
printf("%d\n",x); // কোন এরর আসবে না। x এর মান প্রিন্ট হবে।
}
int main()
{
func();
printf("%d\n",x); // কোন এরর আসবে না। x এর মান প্রিন্ট হবে।
}