static স্টোরেজ ক্লাস কম্পাইলারকে নির্দেশ করে একটি লোকাল ভেরিয়েবলকে প্রোগ্রামের জীবনকালীন আস্তিত্বে রাখতে, প্রতিবার স্কোপে আসা এবং যাওয়ার সময় তৈরি ও ধ্বংস করার পরিবর্তে। তাই লোকাল ভেরিয়েবলকে static করলে সেগুলো ফাংশন কলের মধ্যে তাদের মান বজায় রাখতে পারে।
static মডিফায়ারটি গ্লোবাল ভেরিয়েবলগুলোর ওপরও প্রযোজ্য। এটি করলে সেই ভেরিয়েবলের স্কোপ সীমাবদ্ধ হয়ে যায় সেই ফাইলে যেখানে এটি ডিক্লেয়ার করা হয়েছে।
C++-এ, যখন static একটি ক্লাস ডেটা মেম্বারের ওপর ব্যবহার করা হয়, তবে এটি করলে সেই মেম্বারের শুধু একটি কপি থাকে যা এর ক্লাসের সকল অবজেক্ট শেয়ার করে।
উদাহরণ
#include <iostream>
void func( void ) {
static int i = 10; // লোকাল স্ট্যাটিক ভেরিয়েবল
i++;
std::cout << "i is " << i ;
std::cout << " and count is " << count << std::endl;
}
static int count = 6; /* গ্লোবাল ভেরিয়েবল */
int main() {
while(count--)
{
func();
}
}
আউটপুট
i is 10 and count is 5
i is 11 and count is 4
i is 12 and count is 3
i is 13 and count is 2
i is 14 and count is 1
i is 15 and count is 0