একটি স্কোপ হলো প্রোগ্রামের একটি অঞ্চল এবং বড় কথায় বললে তিনটি জায়গায় ভেরিয়েবল ডিক্লেয়ার করা যায়:
- একটি ফাংশন বা ব্লকের ভিতরে — যাকে লোকাল ভেরিয়েবল বলা হয়,
- ফাংশন প্যারামিটারের ডেফিনিশনে — যাকে ফরম্যাল প্যারামিটার বলা হয়,
- সকল ফাংশনের বাইরে — যাকে গ্লোবাল ভেরিয়েবল বলা হয়।
লোকাল ভেরিয়েবল শুধু সেই ফাংশন বা কোড ব্লকের ভিতরের স্টেটমেন্টগুলো দ্বারা ব্যবহার করা যায়। লোকাল ভেরিয়েবল ফাংশনগুলোকে স্বতন্ত্রভাবে জানা যাবে না।
উদাহরণ (লোকাল ভেরিয়েবল)
#include <iostream>
using namespace std;
int main() {
// লোকাল ভেরিয়েবল ডিক্লেয়ারেশন:
int a, b;
int c;
// আসল ইনিশিয়ালাইজেশন
a = 10;
b = 20;
c = a + b;
cout << c;
return 0;
}
আউটপুট
30
গ্লোবাল ভেরিয়েবল সকল ফাংশনের বাইরে ডিফাইন করা হয়, সাধারণত প্রোগ্রামের শুরুতে। গ্লোবাল ভেরিয়েবল প্রোগ্রামের পুরো লাইফটাইম ধরে তার মান ধরে রাখে। একটি গ্লোবাল ভেরিয়েবল যেকোনো ফাংশন থেকে অ্যাক্সেস করা যায়।
উদাহরণ (গ্লোবাল ভেরিয়েবল)
#include <iostream>
using namespace std;
// গ্লোবাল ভেরিয়েবল ডিক্লেয়ারেশন:
int g;
int main() {
// লোকাল ভেরিয়েবল ডিক্লেয়ারেশন:
int a, b;
// আসল ইনিশিয়ালাইজেশন
a = 10;
b = 20;
g = a + b;
cout << g;
return 0;
}
আউটপুট
30
একই প্রোগ্রামে লোকাল এবং গ্লোবাল ভেরিয়েবলের একই নাম থাকতে পারে কিন্তু ফাংশনের ভিতরে লোকাল ভেরিয়েবলের মানই প্রাধান্য পাবে। একই নামের গ্লোবাল ভেরিয়েবল অ্যাক্সেস করতে হলে স্কোপ রেজোলিউশন অপারেটর (::) ব্যবহার করতে হবে।
উদাহরণ (একই নাম)
#include <iostream>
using namespace std;
// গ্লোবাল ভেরিয়েবল ডিক্লেয়ারেশন:
int g = 20;
int main() {
// লোকাল ভেরিয়েবল ডিক্লেয়ারেশন:
int g = 10;
cout << g; // লোকাল
cout << ::g; // গ্লোবাল
return 0;
}
আউটপুট
10 20