Lagringsklasser i C: auto, ekstern, statisk, registerklasse i C

Innholdsfortegnelse:

Anonim

Hva er lagringsklasse i C?

En lagringsklasse representerer synligheten og plasseringen av en variabel. Den forteller fra hvilken del av koden vi har tilgang til en variabel. En lagringsklasse i C brukes til å beskrive følgende ting:

  • Det variable omfanget.
  • Plasseringen der variabelen skal lagres.
  • Den initialiserte verdien til en variabel.
  • En levetid på en variabel.
  • Hvem har tilgang til en variabel?

Dermed brukes en lagringsklasse til å representere informasjonen om en variabel.

MERK: En variabel er ikke bare knyttet til en datatype, dens verdi, men også en lagringsklasse.

Det er totalt fire typer standard lagringsklasser. Tabellen nedenfor viser lagringsklassene i C.

Lagringsklasse Hensikt
auto Det er en standard lagringsklasse.
ekstern Det er en global variabel.
statisk Det er en lokal variabel som er i stand til å returnere en verdi selv når kontrollen overføres til funksjonsanropet.
registrere Det er en variabel som er lagret i et register.

I denne C-opplæringen lærer du forskjellige typer lagringsklasser i C med eksempler-

  • Auto Storage Class i C
  • Ekstern lagringsklasse i C
    • Første fil: main.c
    • Andre fil: original.c
  • Statisk lagringsklasse i C
  • Registrer lagringsklasse i C

Auto Storage Class i C

Variablene som er definert ved hjelp av automatisk lagringsklasse, kalles lokale variabler. Auto står for automatisk lagringsklasse. En variabel er i automatisk lagringsklasse som standard hvis den ikke er spesifikt spesifisert.

Omfanget av en automatisk variabel er begrenset med den bestemte blokken. Når kontrollen går ut av blokken, blir tilgangen ødelagt. Dette betyr at bare blokken der auto-variabelen er deklarert, får tilgang til den.

Et nøkkelord auto brukes til å definere en automatisk lagringsklasse. Som standard inneholder en automatisk variabel en søppelverdi.

Example, auto int age;

Programmet nedenfor definerer en funksjon med har to lokale variabler

int add(void) {int a=13;auto int b=48;return a+b;}

Vi tar et annet program som viser omfangsnivået "synlighetsnivå" for autovariabler i hver blokkode som er uavhengig av hverandre:

#include int main( ){auto int j = 1;{auto int j= 2;{auto int j = 3;printf ( " %d ", j);}printf ( "\t %d ",j);}printf( "%d\n", j);}

PRODUKSJON:

 3 2 1 

Ekstern lagringsklasse i C

Extern står for ekstern lagringsklasse. Ekstern lagringsklasse brukes når vi har globale funksjoner eller variabler som deles mellom to eller flere filer.

Keyword ekstern brukes til å erklære en global variabel eller funksjon i en annen fil for å gi referansen til variabelen eller funksjonen som allerede er definert i den opprinnelige filen.

Variablene som er definert ved hjelp av et eksternt nøkkelord kalles som globale variabler. Disse variablene er tilgjengelige i hele programmet. Legg merke til at den eksterne variabelen ikke kan initialiseres, den er allerede definert i originalfilen.

Example, extern void display();

Første fil: main.c

#include extern i;main() {printf("value of the external integer is = %d\n", i);return 0;}

Andre fil: original.c

#include i=48;

Resultat:

 value of the external integer is = 48

Følg trinnene nedenfor for å kompilere og kjøre ovennevnte kode

Trinn 1) Opprett nytt prosjekt,

  1. Velg konsollapplikasjon
  2. Klikk Gå

Trinn 2) Velg C og klikk Neste

Trinn 3) Klikk på Neste

Trinn 4) Angi detaljer og klikk Neste

Trinn 5) Klikk Fullfør

Trinn 6) Sett hovedkoden som vist i forrige program i main.c-filen og lagre den

Trinn 7) Opprett en ny C-fil [File -> new -> Empty File, lagre (som original.c) og legg den til det aktuelle prosjektet ved å klikke "OK" i dialogboksen.

Trinn 8) Sett og lagre C-koden til original.c-filen som ble vist i forrige eksempel uten hovedfunksjonen ().

Trinn 9) Bygg og kjør prosjektet. Resultatet er vist i neste figur

Statisk lagringsklasse i C

De statiske variablene brukes i funksjon / fil som lokale statiske variabler. De kan også brukes som en global variabel

  • Statisk lokal variabel er en lokal variabel som beholder og lagrer verdien mellom funksjonsanrop eller blokkering og forblir synlig bare for funksjonen eller blokken der den er definert.
  • Statiske globale variabler er globale variabler som kun er synlige for filen der de er deklarert.
Example: static int count = 10;

Husk at statisk variabel har en standard startverdi null og initialiseres bare en gang i løpet av livet.

#include  /* function declaration */void next(void);static int counter = 7; /* global variable */main() {while(counter<10) {next();counter++; }return 0;}void next( void ) { /* function definition */static int iteration = 13; /* local static variable */iteration ++;printf("iteration=%d and counter= %d\n", iteration, counter);}

Resultat:

iteration=14 and counter= 7iteration=15 and counter= 8iteration=16 and counter= 9

Globale variabler er tilgjengelige i hele filen, mens statiske variabler bare er tilgjengelige for den bestemte delen av en kode.

Levetiden til en statisk variabel er i hele programkoden. En variabel som blir deklarert eller initialisert ved hjelp av statiske nøkkelord inneholder alltid null som standardverdi.

Registrer lagringsklasse i C

Du kan bruke registerlagerklassen når du vil lagre lokale variabler i funksjoner eller blokker i CPU-registre i stedet for RAM for å ha rask tilgang til disse variablene. For eksempel er "tellere" en god kandidat som skal lagres i registeret.

Example: register int age;

Nøkkelordet register brukes til å erklære et register lagringsklasse. Variablene deklarert ved bruk av registerlagerklasse har levetid gjennom hele programmet.

Det ligner på automatisk lagringsklasse. Variabelen er begrenset til den bestemte blokken. Den eneste forskjellen er at variablene som er erklært ved hjelp av registerlagerklasse, lagres i CPU-registre i stedet for et minne. Register har raskere tilgang enn hovedminnet.

Variablene deklarert ved bruk av registerlagerklasse har ingen standardverdi. Disse variablene blir ofte erklært i begynnelsen av et program.

#include  /* function declaration */main() {{register int weight;int *ptr=&weight ;/*it produces an error when the compilation occurs ,we cannot get a memory location when dealing with CPU register*/}}

PRODUKSJON:

error: address of register variable 'weight' requested

Den neste tabellen oppsummerer hovedtrekkene i hver lagringsklasse som ofte brukes i C-programmering

Lagringsklasse Erklæring Oppbevaring Standard startverdi omfang Livstid
auto Inne i en funksjon / blokk Hukommelse Uforutsigbar Innenfor funksjonen / blokken Innenfor funksjonen / blokken
registrere Inne i en funksjon / blokk CPU-registre Søppel Innenfor funksjonen / blokken Innenfor funksjonen / blokken
ekstern Utenfor alle funksjoner Hukommelse Null Hele filen og andre filer der variabelen er deklarert som ekstern program kjøretid
Statisk (lokal) Inne i en funksjon / blokk Hukommelse Null Innenfor funksjonen / blokken program kjøretid
Statisk (global) Utenfor alle funksjoner Hukommelse Null Global program kjøretid

Sammendrag

I denne opplæringen har vi diskutert lagringsklasser i C, for å oppsummere:

  • En lagringsklasse i C brukes til å representere tilleggsinformasjon om en variabel.
  • Lagringsklasse representerer omfanget og levetiden til en variabel.
  • Den forteller også hvem som kan få tilgang til en variabel og fra hvor?
  • Auto, ekstern, register, statisk er de fire forskjellige lagringsklassene i et C-program.
  • En spesifikasjon for lagringsklasse på C-språk brukes til å definere variabler, funksjoner og parametere.
  • auto brukes til en lokal variabel definert i en blokk eller funksjon
  • register brukes til å lagre variabelen i CPU-registre i stedet for minneplassering for rask tilgang.
  • Statisk brukes til både globale og lokale variabler. Hver og en har sitt brukstilfelle innenfor et C-program.
  • Extern brukes til datadeling mellom C-prosjektfiler.