স্টোরেজ ক্লাস ভেরিয়েবলের স্কোপ, লাইফটাইম এবং বাইন্ডিং নির্দেশ করে।
একটি ভেরিয়েবল সম্পূর্ণরূপে ডিফাইন করতে, এর 'টাইপ' ছাড়াও এর স্টোরেজ ক্লাস উল্লেখ করতে হয়।
একটি ভেরিয়েবল নাম কম্পিউটার মেমরির একটি ফিজিক্যাল লোকেশন চিহ্নিত করে, যেখানে ভেরিয়েবলের ভ্যালু সংরক্ষণের জন্য বিটের একটি সংগ্রহ অ্যালোকেট করা হয়।
স্টোরেজ ক্লাস আমাদের নিচের বিষয়গুলো জানায়:
- ভেরিয়েবল কোথায় স্টোর হবে (মেমরিতে নাকি CPU রেজিস্টারে)?
- যদি কিছু ইনিশিয়ালাইজ না করা হয়, তবে ভেরিয়েবলের ইনিশিয়াল ভ্যালু কী হবে?
- ভেরিয়েবলের স্কোপ কী (কোথায় এটি অ্যাক্সেস করা যাবে)?
- ভেরিয়েবলের লাইফ কী?
লাইফটাইম (Lifetime)
একটি ভেরিয়েবলের লাইফটাইম সেই সময়কালকে বলে যাবত்கাল কম্পিউটার তার জন্য মেমরি অ্যালোকেট করে রাখে (মেমরি অ্যালোকেশন এবং ডি-অ্যালোকেশনের মধ্যে সময়কাল)।
C ভাষায়, একটি ভেরিয়েবল অটোম্যাটিক, স্ট্যাটিক বা ডাইনামিক লাইফটাইম 가질 수 있습니다।
- অটোম্যাটিক (Automatic) - অটোম্যাটিক লাইফটাইম والے ভেরিয়েবল তৈরি হয়। প্রতিবার তাদের ডিক্লেয়ারেশন এনকাউন্টার হলে এবং ধ্বংস হয়। এছাড়া তাদের ব্লক এক্সিট করলে।
- স্ট্যাটিক (Static) - একটি ভেরিয়েবল তৈরি হয় যখন ডিক্লেয়ারেশন প্রথমবার এক্সিকিউট হয়। এটি ধ্বংস হয় যখন এক্সিকিউশন বন্ধ/টার্মিনেট হয়।
- ডাইনামিক (Dynamic) - ভেরিয়েবলের মেমরি মেমরি ম্যানেজমেন্ট ফাংশন দিয়ে অ্যালোকেট এবং ডি-অ্যালোকেট করা হয়।
স্টোরেজ ক্লাস (Storage Classes)
C ভাষায় চারটি স্টোরেজ ক্লাস রয়েছে:
| Storage Class | Storage Area | Default initial value | Lifetime | Scope | Keyword |
|---|---|---|---|---|---|
| Automatic | Memory | Garbage value | Till control remains in block | Local | Auto |
| Register | CPU register | Garbage value | Till control remains in block | Local | Register |
| Static | Memory | Zero | Value in between function calls | Local | Static |
| External | Memory | Garbage value | Throughout program execution | Global | Extern |
উদাহরণ
অটোম্যাটিক স্টোরেজ ক্লাসের C প্রোগ্রাম:
#include<stdio.h> main ( ){ auto int i=1;{ auto int i=2;{ auto int i=3; printf ("%d",i) } printf("%d", i); } printf("%d", i); }
আউটপুট
উপরোক্ত প্রোগ্রামটি এক্সিকিউট করলে নিচের আউটপুটটি দেখায়:
3 2 1
উদাহরণ
এক্সটার্নাল স্টোরেজ ক্লাসের C প্রোগ্রাম:
#include<stdio.h> extern int i =1; /* this ‘i’ is available throughout program */ main ( ){ int i = 3; /* this ‘i' available only in main */ printf ("%d", i); fun ( ); } fun ( ) { printf ("%d", i); }
আউটপুট
উপরোক্ত প্রোগ্রামটি এক্সিকিউট করলে নিচের আউটপুটটি দেখায়:
3 1