c programming

Storage Classes

Storage Class

C Language में प्रत्येक Variable के Data Type के साथ उसका Storage Class भी होता है। Storage Class उस Variable का Data Storage Location, Initial Value, Scope तथा Life को Represent करता है। C Language में प्रत्येक Variable का एक Storage Class होता है, जिसे Program में Declare करते समय Initialize किया जाता है। किसी Variable का Default Storage Class, Automatic Allocate होता है।

Types of Storage Class

Automatic Storage Class

Automatic Variable को Runtime पर Automatically Memory Allocate की जाती है। Automatic Variable की Visibility अथवा Scope उस Block तक Limit होता है, जिसमें वे Define हैं। Automatic Variable को मुख्य रूप से Garbage Collection करने के लिए Initialize किया जाता है।

Block से बाहर निकलने पर Automatic Variable को Assigned Memory Free हो जाती है। Automatic Variable को Define करने के लिए Auto Keywords प्रयोग किया जाता है। Default रूप से C में प्रत्येक Local Variable Automatic होता है।

Example


#include <stdio.h>

int main()

{

int a; //auto

char b;

float c;

printf(“%d %c %f”, a,b,c); // printing initial default value of automatic variables a, b, and c. 

return 0;

}

Output


garbage garbage garbage

Static Storage Class

Static Local Variable केवल उस Function या Block के लिए Visible होते हैं, जिसमें वे Define होते हैं। एक ही Static Variable को कई बार Declare किया जा सकता है, लेकिन केवल एक ही समय में Assign किया जा सकता है। Static Integral Variable का Default Initial Value (0) होता है।

Static Global Variable की Visibility उस File तक सीमित है, जिसमें उसे Declare किया गया है। Static Variable को Define करने के लिए Static Keyword का प्रयोग किया जाता है।

Example


#include<stdio.h>

static char c;

static int i;

static float f;

static char s[100];

void main ()

{

printf(“%d %d %f %s”,c,i,f); // the initial default value of c, i, and f will be printed. 

}

Output


0 0 0.000000 (null)

Register Storage Class

CPU में Non-Allocated Memory के Size के अनुसार Register के रूप में Define Variables को CPU Registers में Memory Allocate की जाती है। Register Variable को Dereference नहीं किया जा सकता हैं, अर्थात Register Variable के लिए (&) Operator का use नहीं कर सकते हैं।

Register Variable का Access Time Automatic Variable की तुलना में Fast होता है।Register Local Variable का Initial Default Value (0) होता है। Register Keyword का use उन Variable के लिए किया जाता है, जिसे CPU Register में Store किया जाना चाहिए। हालाँकि, Compiler की Configuration के अनुसार Variable को Register में Store किया जा सकता है।

Register Storage Class एक Variable के Address को Store कर सकता है। Static Variable को Register में Store नहीं किया जा सकता है, क्योंकि एक ही Variable के लिए एक से अधिक Storage Specifier का use नहीं कर सकते हैं।

Example


#include <stdio.h>

int main()

{

register int a; // variable a is allocated memory in the CPU register. The initial default value of a is 0. 

printf(“%d”,a);

}

Output


0

External Storage Class

External Storage Class का use Compiler को यह Inform करने के लिए किया जाता है, कि Extern के रूप में Define Variable को Program में कहीं और External Linkage के साथ Define किया गया है। Extern के रूप में Define Variable को कोई Memory Allocate नहीं की जाती है।

यह केवल Declaration है, और यह Specify करता है, कि Variable Program में कहीं और Define किया गया है। External Integral Type का Default Initial Value (0) होता है। एक External Variable को कई बार Define किया जा सकता है, लेकिन इसे केवल एक बार Intialize किया जा सकता है।

यदि किसी Variable को External Define किया जाता है, तो Compiler उस Variable को Program में Initialize करने के लिए Search करता है, जो External या Static हो सकता है। यदि ऐसा नहीं है, तो Compiler Error दिखाएगा।

Example

Title


#include <stdio.h>

int main()

{

extern int a; // Compiler will search here for a variable defined and initialized somewhere in the program or not. 

printf(“%d”,a);

}

int a = 20;

Output


20

Tags: No tags

Add a Comment

Your email address will not be published. Required fields are marked *