স্ট্যাটিক ভেরিয়েবল static কিওয়ার্ড ব্যবহার করে সংজ্ঞায়িত করা হয়। এগুলো এমন ভেরিয়েবল যা প্রোগ্রাম চলার সময় মেমরিতে থাকে অর্থাৎ তাদের লাইফটাইম পুরো প্রোগ্রাম রান। এটি অটোমেটিক ভেরিয়েবল থেকে আলাদা যেগুলো শুধু তাদের ফাংশন চলার সময় মেমরিতে থাকে এবং ফাংশন শেষ হলে ধ্বংস হয়ে যায়।
ফাংশন-লেভেল স্ট্যাটিক ভেরিয়েবল প্রথমবার ব্যবহার করার সময় তৈরি ও ইনিশিয়ালাইজ হয় যদিও তাদের মেমরি প্রোগ্রাম লোড হওয়ার সময় অ্যালোকেট হয়।
এটি প্রদর্শন করে একটি সি প্রোগ্রাম নিচে দেওয়া হলো -
উদাহরণ
#include <stdio.h>
int func() {
static int num = 0;
num += 5;
return num;
}
int main() {
for(int i = 0; i < 5; i++) {
printf("%d\n", func());
}
return 0;
}
আউটপুট
উপরের প্রোগ্রামের আউটপুট নিচের মতো:
5 10 15 20 25
এখন উপরের প্রোগ্রামটি বুঝি।
func() ফাংশনে একটি স্ট্যাটিক ভেরিয়েবল num আছে যা ০ দিয়ে ইনিশিয়ালাইজড। তারপর num ৫ বাড়ানো হয় এবং এর মান রিটার্ন করা হয়। এটি দেখানো কোড স্নিপেট নিচে:
int func() {
static int num = 0;
num += 5;
return num;
}
main() ফাংশনে, func() ফাংশনটি ৫ বার ফর লুপ ব্যবহার করে কল করা হয়েছে এবং এटी num-এর মান রিটার্ন করে যা প্রিন্ট করা হয়েছে। যেহেতু num একটি স্ট্যাটিক ভেরিয়েবল, এটি প্রোগ্রাম চলার সময় মেমরিতে থাকে এবং কনসিস্টেন্ট ভ্যালু দেয়। এটি দেখানো কোড স্নিপেট নিচে:
int main() {
for(int i = 0; i < 5; i++) {
printf("%d\n", func());
}
return 0;
}