Introduksjon til C-lagringsklasser

Hver verdi eller nummer må lagres et sted for senere bruk, ikke sant? Dette kan gjøres ved å bruke variabler i C. Variabler er lagringsområder som brukes i programmene våre. Hver variabel vil være av en bestemt type som heltall, karakter, og vil også ha spesifikk størrelse og layout avhengig av deres type. Hver type variabel skal lagres i en bestemt del av minnet og vil ha begrensede eller spesifikke tilgangstillatelser. Lagringsklasser i C bestemmer i hvilken del av minnet hver variabel skal lagres, og den bestemmer også omfanget (synligheten) til variabelen. Det er fire typer lagringsklasser - auto, ekstern, statisk og register. Én lagringsspesifikator kan nevnes sammen med variabelen.

Typer lagringsklasser i C.

Typer lagringsklasser i C er som følger

1. Automatisk lagringsklasse

Alle variabler som er erklært i en funksjon eller blokk, vil som standard lagres i en autospesifikator, selv om den ikke er eksplisitt definert. Spesifikatoren for denne lagringsklassen er 'auto'. Omfanget eller synligheten av variablene i automatisk lagringsklasse er lokal for blokken eller funksjonen den er definert. Variabelen blir ødelagt når vi kommer ut av funksjonen eller blokken.

Dette kan forklares bedre med et eksempel. Tenk på eksemplet gitt nedenfor:

Kode:

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

Produksjon:

4

2

Her blir en variabel I av typen helt tall erklært først med verdien 2 tildelt den. Neste inne i en løkke eller blokk igjen erklæres variabel I av samme heltallstype med verdi 4 tildelt den. Hvis lagringsspesifikasjonen ikke er nevnt, vil den som standard bli tatt som automatisk. I den første printf-setningen, som er nevnt inne i blokken, vil det skrives ut 4 ved utskrift av verdien av I. blokken. Det er bedre å initialisere noen verdi til automatiske variabler fordi det er sjanser for å få søppelverdi noen ganger hvis initialisering ikke er utført. Dette eksemplet gir et klart bilde av autovariabler og om lokalt omfang.

2. Registrer lagringsklasse

Variablene som er lagret i registerlagringsklassen vil også ha lokalt omfang, noe som betyr at den bare er tilgjengelig eller synlig i blokken den er deklarert i. Denne lagringen ligner på auto, men hovedforskjellen er at auto-variabler lagres i minnet, mens registervariablene er lagret i CPU-registrene. Dette gjøres hvis vi ønsker å få tilgang til variabelen veldig ofte. Disse kan brukes raskere. Bare noen få variabler lagres ved å bruke registerspesifikasjoner. Hvis det ikke er plass i registeret, lagres det bare i minnet. Ingen startverdi tilordnes registervariablene. & (Adresse-til) -operatør kan ikke brukes på registervariabler. For eksempel lagres variabler som brukes for tellere eller lignende brukstyper ved å bruke registerspesifikator.

3. Statisk lagringsklasse

Variabel, kan det være global eller lokal, lagres ved å bruke statisk spesifiserer i statisk lagringsklasse når variabelen må deklareres en gang og verdien må beholdes. Når en variabel er erklært som statisk, vil verdien lagres eller beholdes mellom funksjonssamtalene. Permanent lagring opprettes, og den deklareres bare en gang. Når en lokal variabel er erklært som statisk, opprettes permanent lagring for den og verdien beholdes hver gang den brukes. I henhold til omfanget av den vanlige lokale variabelen, er statiske lokale variabler også bare synlige for funksjonen eller blokken der den er definert. Når en global variabel er erklært som statisk, ligner statisk lokal, opprettes permanent lagring, og den erklæres bare en gang. Men selv om det er globalt, er disse variablene bare synlige i filen der den er definert.

Statiske variabler kan tydelig avbildes ved bruk av eksemplet nedenfor:

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);
)

Produksjon:

2

4

I programmet ovenfor, når samplefunc () blir kalt, blir variabelen a definert og initialisert første gang og permanent lagring opprettes for den. Ved det matematiske uttrykket som brukes i funksjonen, blir verdien til a 2. Men når den samme samplefunc () kalles andre gang, blir ikke variabelen a definert eller initialisert igjen, snarere tar den den siste beholdte verdien og fortsetter med operasjonen å gjøre det endelige resultatet som 4. Dette er den viktigste bruken og fordelen med statiske variabler.

4. Ekstern lagringsklasse

Variabel som er erklært som ekstern, viser at variabelen er definert et annet sted i et annet program. Disse eksterne variablene brukes når vi ønsker at en hvilken som helst variabel eller funksjon som er definert i ett program, også skal brukes i en annen fil. Variablene med eksternspesifikasjon lagres i ekstern lagringsklasse. Når variabelen er erklært som ekstern er et program, spesifiserer den ekstern kobling, og dermed blir den ikke definert eller initialisert på nytt. Lagring tildeles bare én og initialiseres også bare en gang. Hvis eksterne variabler initialiseres igjen med en annen verdi i det eksterne programmet, vil vi få en feil der det står 'Redefinisjon av variabelen'.

Eksterne variabler blir forklart ved å bruke eksemplet nedenfor:

Kode:

Prg1.c

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

Prg2.c

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

Produksjon:

10

Her deklareres heltalets variabeltelling i det første C-programmet (Prg1.c) og inne i hovedfunksjonen initialiseres det til verdi 10. I det andre C-programmet blir den samme tellevariabelen erklært ved bruk av extern-spesifiser, som spesifiserer at det er ekstern kobling, og verdien hentes fra lagringsplassen, og verdien 10 blir gitt til antall teller når vi skriver den ut i det andre programmet. Dette er bruken av eksterne variabler. Avhengig av det forskjellige formålet blir hver lagringsklasse brukt for passende variabler, og deklareres med de tilhørende spesifikasjonene.

Anbefalte artikler

Dette er en guide til C Storage Classes. Her diskuterer vi typer lagringsklasser som inkluderer automatisk lagringsklasse, register lagringsklasse, statisk lagringsklasse og ekstern lagringsklasse. Du kan også se på følgende artikler for å lære mer–

  1. Hva er JavaBeans?
  2. ES6 vs ES5
  3. C ++ vs Visual C ++
  4. C vs C ++ Ytelse