কম্পিউটার টিউটোরিয়াল

C++-এ ভেরিয়েবল, তাদের টাইপ এবং স্কোপ


C++-এ প্রতিটি ভেরিয়েবলের একটি নির্দিষ্ট টাইপ থাকে, যা নির্ধারণ করে ভেরিয়েবলের মেমরির আকার ও লেআউট; সেই মেমরিতে কী রেঞ্জের মান স্টোর করা যাবে; এবং ভেরিয়েবলের ওপর কী কী অপারেশন প্রয়োগ করা যাবে। আমরা একটি ভেরিয়েবল নিচের নোটেশন দিয়ে ডিক্লেয়ার করি:

type variableName;

টাইপ হতে পারে প্রিমিটিভ (int, bool, float, char ইত্যাদি), একটি এনামারেটেড টাইপ, অন্য টাইপের পয়েন্টার, অথবা ডেটা স্ট্রাকচার বা ক্লাস দিয়ে ডিফাইন করা একটি জটিল টাইপ।

ভেরিয়েবল স্কোপ (Variable Scope)

একটি স্কোপ হলো প্রোগ্রামের একটি অঞ্চল এবং বড় কথায় বললে তিনটি জায়গায় ভেরিয়েবল ডিক্লেয়ার করা যায়:

  • একটি ফাংশন বা ব্লকের ভিতরে — যাকে লোকাল ভেরিয়েবল বলা হয়,
  • ফাংশন প্যারামিটারের ডেফিনিশনে — যাকে ফরম্যাল প্যারামিটার বলা হয়,
  • সকল ফাংশনের বাইরে — যাকে গ্লোবাল ভেরিয়েবল বলা হয়।

লোকাল ভেরিয়েবল শুধু সেই ফাংশন বা কোড ব্লকের ভিতরের স্টেটমেন্টগুলো দ্বারা ব্যবহার করা যায়। লোকাল ভেরিয়েবল ফাংশনগুলোকে স্বতন্ত্রভাবে জানা যাবে না।

উদাহরণ (লোকাল ভেরিয়েবল)

#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

  1. সি ও সি++-এ ভেরিয়েবল লেন্থ অ্যারে (VLA)

  2. C++-এ Walls and Gates: দরজা থেকে খালি ঘরের দূরত্ব পূরণ করা

  3. বৃত্ত ও আয়ত ওভারল্যাপ চেক করা C++-এ

  4. C++-এ ফ্লিপ-ফ্লপের প্রকার ও রূপান্তর