গ্লোবাল ও স্ট্যাটিক ভেরিয়েবল ডিফল্ট ভ্যালুতে ইনিশিয়ালাইজ হয় কারণ এটি সি বা সি++ স্ট্যান্ডرده আছে এবং কম্পাইল টাইমে শূন্য অ্যাসাইন করা ফ্রি (খরচহীন)। স্ট্যাটিক ও গ্লোবাল ভেরিয়েবল দুটোই জেনারেটেড অবজেক্ট কোডে একইভাবে আচরণ করে। এই ভেরিয়েবলগুলো .bss সেকশনে অ্যালোকেট হয় এবং লোডিংয়ের সময় ভেরিয়েবলগুলোর জন্য আলট করা কনস্ট্যান্টগুলো থেকে মেমরি অ্যালোকেট করে।
গ্লোবাল ও স্ট্যাটিক ভেরিয়েবলের উদাহরণ:
উদাহরণ
#include <stdio.h>
int a;
static int b;
int main() {
int x;
static int y;
int z = 28;
printf("The default value of global variable a : %d", a);
printf("\nThe default value of global static variable b : %d", b);
printf("\nThe default value of local variable x : %d", x);
printf("\nThe default value of local static variable y : %d", y);
printf("\nThe value of local variable z : %d", z);
return 0;
}
আউটপুট
The default value of global variable a : 0 The default value of global static variable b : 0 The default value of local variable x : 0 The default value of local static variable y : 0 The value of local variable z : 28
উপরের প্রোগ্রামে গ্লোবাল ভেরিয়েবলগুলো main() ফাংশনের বাইরে ডিক্লেয়ার করা হয়েছে এবং 그중 একটি স্ট্যাটিক। তিনটি লোকাল ভেরিয়েবল ডিক্লেয়ার করা হয়েছে এবং z ইনিশিয়ালাইজড।
int a; static int b; …. int x; static int y; int z = 28;
তাদের ডিফল্ট মানগুলো প্রিন্ট করা হয়েছে।
printf("The default value of global variable a : %d", a);
printf("\nThe default value of global static variable b : %d", b);
printf("\nThe default value of local variable x : %d", x);
printf("\nThe default value of local static variable y : %d", y);
printf("\nThe value of local variable z : %d", z);