সি-এ কিছু পরিস্থিতিতে ভেরিয়েবল ডিক্লেয়ার করার সময় যদি মান না দেওয়া থাকে, তবে সেগুলো অটোমেটিক্যালি ০ দিয়ে ইনিশিয়ালাইজ হয় (স্ট্যাটিক স্টোরেজ ডুরেশন)। কিন্তু লোকাল ভেরিয়েবল (অটোমেটিক স্টোরেজ) এর ক্ষেত্রে মান অনডিফাইনড (গার্বেজ) থাকে। এছাড়া main-এর প্রথম প্যারামিটার (argc) সাধারণত ১ হয়।
স্ট্যাটিক/গ্লোবাল ভেরিয়েবল — অটো ০
#include <stdio.h>
#include <stdlib.h>
int x, y, array[3]; // গ্লোবাল/স্ট্যাটিক — অটো ০
int main(int argc) { // argc = আর্গুমেন্ট কাউন্ট (সাধারণত ১)
int index;
printf("x = %d, y = %d\n\n", x, y); // 0, 0
for (index = 0; index < 3; index++)
printf("Array[%d] = %d\n", index, array[index]); // 0, 0, 0
printf("The value of argc: %d\n", argc); // 1
return 0;
}
আউটপুট
x = 0, y = 0
Array[0] = 0
Array[1] = 0
Array[2] = 0
The value of argc: 1
পার্শিয়াল অ্যারে ইনিশিয়ালাইজেশন — বাকি ০
#include <stdio.h>
int main() {
int array[10] = {1, 2, 3, 4, 5, 6}; // প্রথম ৬ টি দিয়ে, বাকি ০
for (int i = 0; i < 10; i++)
printf("Array[%d] = %d\n", i, array[i]);
return 0;
}
আউটপুট
Array[0] = 1
Array[1] = 2
Array[2] = 3
Array[3] = 4
Array[4] = 5
Array[5] = 6
Array[6] = 0
Array[7] = 0
Array[8] = 0
Array[9] = 0
সারসংক্ষেপ: স্টোরেজ ডুরেশন অনুযায়ী ডিফল্ট মান
| স্টোরেজ ডুরেশন | উদাহরণ | ডিফল্ট মান |
|---|---|---|
Static (গ্লোবাল, static) | int x; (ফাংশন বাইরে) | ০ (নাল পয়েন্টার, ০.০, '\0') |
Thread-local (_Thread_local) | _Thread_local int x; | ০ |
Automatic (লোকাল, auto) | void f() { int x; } | অনডিফাইনড (গার্বেজ) |
| Allocated (malloc/new) | malloc(n) | অনইনিশিয়ালাইজড (গার্বেজ) |
| Allocated (calloc) | calloc(n, size) | ০ (জিরো-ফিল্ড) |