Introduktion til C-opbevaringsklasser

Hver værdi eller nummer skal gemmes et sted til senere brug, ikke? Dette kan gøres ved hjælp af variabler i C. Variabler er lagerområder, der bruges i vores programmer. Hver variabel vil være af en bestemt type som heltal, karakter og har også specifik størrelse og layout afhængigt af deres type. Hver type variabel skal gemmes i en bestemt del af hukommelsen og har begrænsede eller specifikke adgangstilladelser. Lagerklasser i C bestemmer, i hvilken del af hukommelsen hver variabel skal gemmes, og den bestemmer også variabelens omfang (synlighed). Der er fire typer lagerklasser - auto, ekstern, statisk og register. En lagringsspecifikation kan nævnes sammen med variablen.

Typer af opbevaringsklasser i C

Typer af opbevaringsklasser i C er som følger

1. Automatisk lagerklasse

Alle variabler, der er erklæret inden for en funktion eller blok, gemmes som standard i en autospecifikation, selvom det ikke er udtrykkeligt defineret. Specifikatoren for denne lagerklasse er 'auto'. Omfanget eller synligheden af ​​variablerne i automatisk lagerklasse er lokal for den blok eller funktion, den er defineret. Variabelen vil blive ødelagt, når vi kommer ud af funktionen eller blokken.

Dette kan forklares bedre med et eksempel. Overvej eksemplet nedenfor:

Kode:

int main() (
int i = 2;
( int i = 4;
printf(“%d\n”, i);
)
printf(“%d\n”, i);
)

Produktion:

4

2

Her erklæres en variabel I af typen heltal først med værdien 2 tildelt den. Næste inde i en løkke eller blok igen erklæres variabel I af samme heltalstype med værdien 4 tildelt den. Hvis lagringsspecifikationen ikke nævnes, vil den som standard blive taget som auto. I den første printf-sætning, der er nævnt inde i blokken, udskrives 4 ved udskrivning af værdien af ​​I. Mens der i den anden printf-sætning, der er nævnt uden for blokken, udskrives værdien af ​​I som 2, den værdi, der er nævnt uden for blokken. Det er bedre at initialisere en vis værdi til automatiske variabler, fordi der er chancer for at få nogen affaldsværdi nogle gange, hvis initialisering ikke er udført. Dette eksempel giver et klart billede af auto-variabler og om lokalt omfang.

2. Registrer lagerklasse

De variabler, der er gemt i registerlagerklassen, har også lokalt omfang, hvilket betyder, at det kun er tilgængeligt eller synligt i den blok, hvori det er deklareret. Denne lagring ligner auto, men den største forskel er, at auto-variabler gemmes i hukommelsen, mens registervariablerne gemmes i CPU-registre. Dette gøres, hvis vi ofte vil have adgang til variablen. Disse kan bruges hurtigere. Kun et par variabler gemmes ved hjælp af registerspecifikationer. Hvis der ikke er plads i registret, gemmes det kun i hukommelsen. Ingen initialværdi tildeles til registervariablerne. Operatøren & (adresse-på) kan heller ikke bruges på registervariabler. For eksempel gemmes variabler, der bruges til tællere eller lignende brugstyper ved hjælp af registerspecifikation.

3. Statisk opbevaringsklasse

Variablen, måske den er global eller lokal, gemmes ved hjælp af statisk specifikator i statisk lagerklasse, når variablen skal deklareres én gang, og værdien skal bevares. Når en variabel deklareres som statisk, gemmes eller bevares værdien mellem funktionsopkaldene. Permanent lager oprettes, og det erklæres kun én gang. Når en lokal variabel erklæres som statisk, oprettes permanent lager for den, og værdien bevares, hver gang den bruges. I henhold til omfanget af den sædvanlige lokale variabel er statiske lokale variabler også kun synlige for funktionen eller blokken, hvor den er defineret. Når en global variabel deklareres som statisk, ligner statisk lokal, oprettes permanent lager, og den erklæres kun én gang. Men selvom det er globalt, er disse variabler kun synlige i den fil, som den er defineret.

Statiske variabler kan tydeligt afbildes ved hjælp af nedenstående eksempel:

Kode:

int samplefunc() (
static int a = 0;
a = a+2;
return a;
)
int main() (
int result1 = samplefunc();
int result2 = samplefunc();
printf("%d\n", result1);
printf("%d\n", result2);
)

Produktion:

2

4

I ovenstående program, når samplefunc () kaldes, defineres og initialiseres variablen a første gang, og der oprettes permanent lager til det. Ved det matematiske udtryk, der bruges i funktionen, bliver værdien af ​​a derefter 2. Men når den samme prøvefunk () kaldes anden gang, defineres eller initialiseres ikke variabel a igen, snarere tager den den sidste bevarede værdi og fortsætter med operationen at gøre det endelige resultat som 4. Dette er den vigtigste anvendelse og fordel ved statiske variabler.

4. Ekstern lagerklasse

Variabel, der er erklæret som ekstern, viser, at variablen er defineret andetsteds i et andet program. Disse eksterne variabler bruges, når vi ønsker, at enhver variabel eller funktion, der er defineret i et program, også skal bruges i en anden fil. Variablerne med ekstern specifikator gemmes i den eksterne lagerklasse. Når variablen er erklæret som ekstern er et program, specificerer den den eksterne forbindelse, og den er derfor ikke defineret eller initialiseret igen. Opbevaring tildeles kun én og initialiseres også kun én gang. Hvis eksterne variabler initialiseres igen med en anden værdi i det eksterne program, får vi en fejl med angivelse af 'Redefinition af variablen'.

Eksterne variabler forklares ved hjælp af nedenstående eksempel:

Kode:

Prg1.c

int count;
int main() (
count = 10;
)

Prg2.c

extern int count;
int main() (
printf(“%d”, count);
)

Produktion:

10

Her deklareres heltalvariabeltællingen i det første C-program (Prg1.c), og inden i hovedfunktionen initialiseres det til værdi 10. I det andet C-program deklareres den samme tællervariabel ved hjælp af ekstern-specifikator, som specificerer, at der er ekstern kobling, og værdien hentes fra lageret, og værdien 10 gives til værdien, når vi udskriver den i det andet program. Dette er brugen af ​​eksterne variabler. Afhængigt af det forskellige formål bruges hver lagringsklasse til passende variabler, og det deklareres med de tilsvarende specifikationer.

Anbefalede artikler

Dette er en guide til C Storage Classes. Her diskuterer vi typer af opbevaringsklasser, der inkluderer automatisk opbevaringsklasse, registrer opbevaringsklasse, statisk opbevaringsklasse og ekstern opbevaringsklasse. Du kan også se på de følgende artikler for at lære mere–

  1. Hvad er JavaBeans?
  2. ES6 vs ES5
  3. C ++ vs Visual C ++
  4. C vs C ++ Ydeevne

Kategori: