Lagringsklasser i C: Auto, Ekstern, Statisk, Register (Eksempler)
Hva er lagringsklasse i C?
En lagringsklasse representerer synligheten og en plassering av en variabel. Den forteller fra hvilken del av koden vi kan få tilgang til en variabel. En lagringsklasse i C brukes til å beskrive følgende ting:
- Det variable omfanget.
- Stedet hvor variabelen skal lagres.
- Den initialiserte verdien til en variabel.
- En levetid på en variabel.
- Hvem kan få tilgang til en variabel?
Dermed brukes en lagringsklasse for å representere informasjonen om en variabel.
NOTAT: En variabel er ikke bare assosiert med en data-type, dens verdi, men også en lagringsklasse.
Hva er typene lagringsklasser i C?
Det er totalt fire typer standard lagringsklasser. Tabellen nedenfor representerer lagringsklassene i C.
Oppbevaringsklasse | Formål |
---|---|
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 funksjonskallet. |
registrere | Det er en variabel som er lagret i et register. |
Autolagringsklasse i C
Variablene definert ved hjelp av autolagringsklassen kalles lokale variabler. Auto står for automatisk lagringsklasse. En variabel er i autolagringsklassen som standard hvis den ikke er eksplisitt spesifisert.
Omfanget av en autovariabel er begrenset kun med den bestemte blokken. Når kontrollen går ut av blokken, blir tilgangen ødelagt. Dette betyr at bare blokken der den automatiske variabelen er deklarert kan få tilgang til den.
Et nøkkelord auto brukes til å definere en autolagringsklasse. Som standard inneholder en automatisk variabel en søppelverdi.
Example, auto int age;
Programmet nedenfor definerer en funksjon som 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 blokkkode som er uavhengig av hverandre:
#include <stdio.h> 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.
søkeord ekstern brukes til å deklarere en global variabel eller funksjon i en annen fil for å gi referansen til variabel eller funksjon som allerede er definert i den opprinnelige filen.
Variablene definert ved hjelp av et eksternt nøkkelord kalles globale variabler. Disse variablene er tilgjengelige gjennom hele programmet. Legg merke til at den eksterne variabelen ikke kan initialiseres, den er allerede definert i den opprinnelige filen.
Example, extern void display();
Første fil: main.c
#include <stdio.h> extern i; main() { printf("value of the external integer is = %d\n", i); return 0;}
Andre fil: original.c
#include <stdio.h> i=48;
Resultat:
value of the external integer is = 48
Følg trinnene nedenfor for å kompilere og kjøre koden ovenfor
Trinn 1) Opprett nytt prosjekt,
- Velg konsollapplikasjon
- Klikk på Go
Trinn 2) Velg C og klikk på Neste
Trinn 3) Klikk på Neste
Trinn 4) Skriv inn detaljer og klikk på Neste
Trinn 5) Klikk Fullfør
Trinn 6) Legg hovedkoden som vist i forrige program i main.c-filen og lagre den
Trinn 7) Opprett en ny C-fil [Fil -> ny -> Tom fil , lagre (som original.c) og legg den til det gjeldende prosjektet ved å klikke "OK" i dialogboksen .
Trinn 8) Sett inn og lagre C-koden til original.c-filen vist i forrige eksempel uten main()-funksjonen.
Trinn 9) Bygg og kjør prosjektet ditt. Resultatet vises 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 funksjonskall eller blokk og forblir synlig bare for funksjonen eller blokken den er definert i.
- Statiske globale variabler er globale variabler som er synlige bare til filen der den er deklarert.
Example: static int count = 10;
Husk at statisk variabel har en standard startverdi null og initialiseres bare én gang i løpet av levetiden.
#include <stdio.h> /* 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= 7 iteration=15 and counter= 8 iteration=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 er deklarert eller initialisert ved hjelp av statisk nøkkelord inneholder alltid null som standardverdi.
Registrer lagringsklasse i C
Du kan bruke registerlagringsklassen når du vil lagre lokale variabler innenfor funksjoner eller blokker i CPU-registre i stedet for RAM å ha rask tilgang til disse variablene. For eksempel er «tellere» en god kandidat til å lagres i registeret.
Example: register int age;
Nøkkelordet registrere brukes til å deklarere en registerlagringsklasse. Variablene deklarert ved bruk av registerlagringsklasse har levetid gjennom hele programmet.
Det ligner på autolagringsklassen. Variabelen er begrenset til den bestemte blokken. Den eneste forskjellen er at variablene som er deklarert ved bruk av registerlagringsklasse, er lagret i CPU-registre i stedet for et minne. Register har raskere tilgang enn hovedminnet.
Variablene deklarert ved bruk av registerlagringsklasse har ingen standardverdi. Disse variablene er ofte deklarert i begynnelsen av et program.
#include <stdio.h> /* 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 til hver lagringsklasse som vanligvis brukes i C-programmering
Oppbevaringsklasse | Erklæring | oppbevaring | Standard startverdi | Omfang | Lifetime |
---|---|---|---|---|---|
auto | Inne i en funksjon/blokk | Minne | Uforutsigbare | 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 | Minne | Zero | Hele filen og andre filer der variabelen er erklært som ekstern | program kjøretid |
Statisk (lokal) | Inne i en funksjon/blokk | Minne | Zero | Innenfor funksjonen/blokken | program kjøretid |
Statisk (globalt) | Utenfor alle funksjoner | Minne | Zero | 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.
- Lagringsklassen representerer omfanget og levetiden til en variabel.
- Den forteller også hvem som kan få tilgang til en variabel og hvorfra?
- Auto, ekstern, register, statisk er de fire forskjellige lagringsklassene i et C-program.
- En spesifikasjon av lagringsklasse i C-språk brukes til å definere variabler, funksjoner og parametere.
- auto brukes for 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 for både globale og lokale variabler. Hver og en har sitt bruksområde i et C-program.
- Extern brukes for datadeling mellom C-prosjektfiler.