কম্পিউটার

C++ এ স্ট্যাটিক, অটো, গ্লোবাল এবং লোকাল ভেরিয়েবলের মধ্যে পার্থক্য


এখানে দুটি পৃথক ধারণা রয়েছে -

  • স্কোপ, যা নির্ধারণ করে যে একটি নাম কোথায় অ্যাক্সেস করা যেতে পারে - বিশ্বব্যাপী এবং স্থানীয়
  • স্টোরেজ সময়কাল, যা নির্ধারণ করে কখন একটি ভেরিয়েবল তৈরি এবং ধ্বংস করা হয় - স্ট্যাটিক এবং স্বয়ংক্রিয়

স্কোপ

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

উদাহরণ

#include <iostream>
using namespace std;

int main () {
   // Local variable declaration:
   int a, b;
   int c;

   // actual initialization
   a = 10;
   b = 20;
   c = a + b;

   cout << c;
   return 0;
}

এটি আউটপুট দেবে −

আউটপুট

30

গ্লোবাল ভেরিয়েবলগুলি সমস্ত ফাংশনের বাইরে সংজ্ঞায়িত করা হয়, সাধারণত প্রোগ্রামের উপরে। গ্লোবাল ভেরিয়েবলগুলি আপনার প্রোগ্রামের জীবনকাল জুড়ে তাদের মান ধরে রাখবে। একটি গ্লোবাল ভেরিয়েবল যেকোনো ফাংশন দ্বারা অ্যাক্সেস করা যেতে পারে।

উদাহরণ

#include <iostream>
using namespace std;

// Global variable declaration:
int g;

int main () {
   // Local variable declaration:
   int a, b;

   // actual initialization
   a = 10;
   b = 20;
   g = a + b;

   cout << g;
   return 0;
}

এটি আউটপুট দেবে −

আউটপুট

30

সঞ্চয়স্থানের সময়কাল

স্বয়ংক্রিয় ভেরিয়েবল হল স্থানীয় ভেরিয়েবল যাদের জীবনকাল শেষ হয়ে যায় যখন এক্সিকিউশন তাদের স্কোপ ছেড়ে যায় এবং যখন স্কোপ পুনরায় প্রবেশ করা হয় তখন পুনরায় তৈরি করা হয়।

উদাহরণ

for (int i =0 0; i < 5; ++i) {
   int n = 0;
   printf("%d ", ++n); // prints 1 1 1 1 1 - the previous value is lost
}

স্ট্যাটিক ভেরিয়েবলের একটি জীবনকাল থাকে যা প্রোগ্রামের শেষ পর্যন্ত স্থায়ী হয়। যদি তারা স্থানীয় ভেরিয়েবল হয়, তাহলে তাদের মান বজায় থাকে যখন মৃত্যুদন্ড তাদের সুযোগ ছেড়ে দেয়।

for (int i = 0; i < 5; ++i) {
   static int n = 0;
   printf("%d ", ++n); // prints 1 2 3 4 5 - the value persists
}

নোট করুন যে স্ট্যাটিক কীওয়ার্ডের স্ট্যাটিক স্টোরেজ সময়কাল ছাড়াও বিভিন্ন অর্থ রয়েছে। এছাড়াও, C++-এ স্বয়ংক্রিয় শব্দের অর্থ আর স্বয়ংক্রিয় স্টোরেজ সময়কাল নয়; এর মানে এখন স্বয়ংক্রিয় প্রকার, ভেরিয়েবলের ইনিশিয়ালাইজার থেকে অনুমান করা হয়েছে।


  1. C/C++ এ const int*, const int * const এবং int const * এর মধ্যে পার্থক্য?

  2. C++ এ একটি সংজ্ঞা এবং একটি ঘোষণার মধ্যে পার্থক্য কী?

  3. C++ এ #define এবং const কীওয়ার্ডের মধ্যে পার্থক্য কী?

  4. পাইথনে বিশ্বব্যাপী এবং স্থানীয় ভেরিয়েবলের মধ্যে পার্থক্য কী?