আজকে আমি আলোচনা করবো সি প্রোগ্রামিং এর বিভিন্ন স্টোরেজ ক্লাস গুলো নিয়ে | এখন হয়তো অনেকেই ভাবছেন স্টোরেজ ক্লাস গুলো কি |
আসলে স্টোরেজ ক্লাস বলতে আমরা বুঝি সেই ক্লাস গুলোকে যে ক্লাসগুলো সি প্রোগ্রামিং এর লোকাল ভ্যারিয়েবল , গ্লোবাল ভ্যারিয়েবল এবং সি প্রোগ্রামিং এর ফাঙ্কশন গুলোর ভিসিবিলিটিকে ডিফাইন করে|
এখন অনেকের মনে এই প্রশ্ন ও কাজ করছে যে আমি যে লোকাল এবং গ্লোবাল ভ্যারিয়েবল এর কথা বললাম| এই লোকাল এবং গ্লোবাল ভ্যারিয়েবল আবার কি জিনিস | আসলে আমার ইচ্ছা ছিল লোকাল এবং গ্লোবাল ভ্যারিয়েবল নিয়ে ডিটেলস এ লেখার আমি সেটা লিখবো ও | আজকে সুধু এতটুকু বলে রাখি লোকাল ভ্যারিয়েবল হচ্ছে সেই ভ্যারিয়েবল যেটি শুধুমাত্র সি প্রোগ্রামিং এর যেই ফাঙ্কশন এ ডিক্লেয়ার করা হবে ওই ফাঙ্কশন ছাড়া অন্য কোনো ফাঙ্কশন এ ব্যবহার করা যাবেনা | গত একটা টিউটোরিয়াল এ ফাঙ্কশন নিয়ে কথা বলেছিলাম |অন্য একটি পোস্ট এ আমি ভ্যারিয়েবল নিয়েও লিখেছিলাম | তো কোনো একটা ফাঙ্কশন এর ভিতর যদি একটা ভ্যারিয়েবল ডিক্লেয়ার করা হয় তাহলে সেই ভ্যারিয়েবল টি শুধু মাত্র ওই ফাঙ্কশন ছাড়া কোথাও ব্যবহার করা যায়না | এটাকেই লোকাল ভ্যারিয়েবল বলা হয় | যেটা শুধুমাত্র নিজের জন্য| আর গ্লোবাল ভ্যারিয়েবল টা হলো সবার জন্য | অর্থাৎ যে কোনো ফাঙ্কশন থেকেই আমি গ্লোবাল ভ্যারিয়েবল কে ব্যবহার করতে পারবো |
তো কিভাবে লোকাল র গ্লোবাল ভ্যারিয়েবল ডিক্লেয়ার করতে হয় সেটা আমি অন্য পোস্ট এ বলবো আজকে আলোচনার জন্য একটু ধারণা দিতে হলো | তো যেই বিষয় নিয়ে আলোচনার কথা সেটি হচ্ছে সি প্রোগ্রামিং এর স্টোরেজ ক্লাস | সি প্রোগ্রামিং এ মূলত ৪টি স্টোরেজ ক্লাস আছে |
১.auto
২.register
৩.static
৪.extern
এখন আমি বলবো কোথায় কেন ব্যবহার করা হয় এই স্টোরেজ ক্লাসগুলো |
১.auto : প্রথমেই আসি auto নিয়ে | অটো হচ্ছে এমন একটি স্টোরেজ ক্লাস যেটি সকল লোকাল ভ্যারিয়েবল এর জন্য ব্যবহার হয়ে থাকে | এটা অনেকটা ডিফল্ট ক্লাস এর মতো ব্যবহার হয় | অর্থাৎ যেই ক্লাস এর কোনো মালিকানা নেই | আর এটা ডিক্লেয়ার করা হয় ঠিক এভাবে
{
int mount;
auto int month;
}
২.register : এরপর যেটি নিয়ে কথা বলবো সেটি হচ্ছে register | যদি আপনি কোনো ভ্যারিয়েবল কে ram এ সেভ করার পরিবর্তে register এ রাখতে চান তাহলে register ক্লাস টি ব্যবহার হয় | যেমন ধরুন
{
register int miles;
}
৩.Static : Static তা মূলত গ্লোবাল ভ্যারিয়েবল হিসেবে ব্যবহার হয় | যেমন ধরুন আপনি বারবার একটি ভ্যারিয়েবল বানাবেন অথবা মুছবেন সেটি না করে একটা স্ট্যাটিক ভ্যারিয়েবল ঠিক ফাঙ্কশন এর উপর ডিক্লেয়ার করে লাইফটাইম এর জন্য রেখে দিতে পারেন |
static int count = 5; /* global variable */
int main() {
}
৪. extern : সব শেষে যেটি আসসে যেটি হচ্ছে extern | extern এমন কিছু গ্লোবাল ভ্যারিয়েবল এর রেফারেন্স হিসেবে ব্যবহার হয় যেটিকে সব প্রোগ্রাম ফাইল থেকে এক্সসেস করা যায়|
যেমন ধরুন
first file
#include <stdio.h>
int count ;
extern void write_extern(); /* এখানে extern দিয়ে আমরা রেফারেন্স করে write_extern ফাঙ্কশনটিকে */
main() {
count = 5;
write_extern();
}
second file
#include <stdio.h>
extern int count; /*সেকেন্ডএকটি ফাইল খুলে ওই ফাইল এ কাউন্ট টাকে আবার extern দিয়ে ডিক্লেয়ার করে নিচ্ছি যেহেতু আমরা পরবর্তীতে কাউন্ট টিকে write _extern ফাঙ্কশন এ প্রিন্ট করছি |
void write_extern(void) {
printf(“count is %d\n”, count); /* কাউন্ট টিকে প্রিন্ট করছি write _extern ফাঙ্কশন এর ভিতর */
}
এই ছিল সি প্রোগ্রামিং এর ৪টি স্টোরেজ ক্লাস |