সমস্যা
সি ভাষায় কী কী স্টোরেজ ক্লাস আছে? প্রোগ্রামসহ ব্যাখ্যা করুন।
সমাধান
একটি স্টোরেজ ক্লাস ডিফাইন করা হয় ভেরিয়েবল বা ফাংশনের স্কোপ ও লাইফটাইম যেটি একটি সি প্রোগ্রামে উপস্থিত থাকে।
স্টোরেজ ক্লাস
সি-তে স্টোরেজ ক্লাসগুলো নিম্নরূপ −
- auto
- extern
- static
- register
অটোমেটিক ভেরিয়েবল/লোকাল ভেরিয়েবল
- কীওয়ার্ড − auto
- এগুলোক লোকাল ভেরিয়েবলও বলা হয়
- স্কোপ −
একটি লোকাল ভেরিয়েবলের স্কোপ সেই ব্লকের মধ্যে উপলব্ধ থাকে যেখানে সেগুলো ডিক্লেয়ার করা হয়েছে।
এই ভেরিয়েবলগুলো একটি ব্লকের ভেতরে ডিক্লেয়ার করা হয়।
- ডিফল্ট ভ্যালু − গার্বেজ ভ্যালু
উদাহরণ
#include<stdio.h> void 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
গ্লোবাল ভেরিয়েবল/এক্সটার্নাল ভেরিয়েবল
- কীওয়ার্ড − extern
এই ভেরিয়েবলগুলো ব্লকের বাইরে ডিক্লেয়ার করা হয় তাই এগুলোক গ্লোবাল ভেরিয়েবলও বলা হয়।
স্কোপ − একটি গ্লোবাল ভেরিয়েবলের স্কোপ পুরো প্রোগ্রামে উপলব্ধ।
- ডিফল্ট ভ্যালু − শূন্য
উদাহরণ
#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); }আউটপুট
31
স্ট্যাটিক ভেরিয়েবল
- কীওয়ার্ড − static
- স্কোপ − একটি স্ট্যাটিক ভেরিয়েবলের স্কোপ হলো এটি প্রোগ্রাম চলাকালীন এবং ফাংশন কলের মাঝপথে তার মান ধরে রাখে।
- স্ট্যাটিক ভেরিয়েবল শুধু একবার ইনিশিয়ালাইজ হয়।
- ডিফল্ট ভ্যালু − শূন্য
উদাহরণ
#include<stdio.h> main (){ inc (); inc (); inc (); } inc (){ static int i =1; printf ("%d", i); i++; }আউটপুট
1 2 3
রেজিস্টার ভেরিয়েবল
- কীওয়ার্ড − register
রেজিস্টার ভেরিয়েবলের মান সিপিইউ রেজিস্টারে সংরক্ষিত হয় সাধারণ ভেরিয়েবলের মত মেমোরিতে না।
রেজিস্টার হলো সিপিইউ-তে আস্থায়ী স্টোরেজ ইউনিট।
উদাহরণ
#include<stdio.h> main (){ register int i; for (i=1; i< =5; i++) printf ("%d",i); }আউটপুট
1 2 3 4 5