Vad är lagringsklass i C?
En lagringsklass representerar synligheten och placeringen av en variabel. Den berättar från vilken del av koden vi kan komma åt en variabel. En lagringsklass i C används för att beskriva följande saker:
- Den variabla omfattningen.
- Platsen där variabeln kommer att lagras.
- Det initialiserade värdet för en variabel.
- En variabels livstid.
- Vem har åtkomst till en variabel?
Således används en lagringsklass för att representera informationen om en variabel.
OBS: En variabel är inte bara associerad med en datatyp, dess värde utan också en lagringsklass.
Det finns totalt fyra typer av standardlagringsklasser. Tabellen nedan representerar lagringsklasserna i C.
Lagringsklass | Ändamål |
bil | Det är en standardlagringsklass. |
extern | Det är en global variabel. |
statisk | Det är en lokal variabel som kan returnera ett värde även när kontrollen överförs till funktionsanropet. |
Registrera | Det är en variabel som lagras i ett register. |
I den här C-självstudien lär du dig olika typer av lagringsklasser i C med exempel-
- Klass för automatisk lagring i C
- Extern lagringsklass i C
- Första filen: main.c
- Andra filen: original.c
- Statisk lagringsklass i C
- Registrera lagringsklass i C
Klass för automatisk lagring i C
Variablerna definierade med hjälp av automatisk lagringsklass kallas som lokala variabler. Auto står för automatisk lagringsklass. En variabel är i klass för automatisk lagring om den inte uttryckligen anges.
Omfattningen av en automatisk variabel är begränsad med endast det specifika blocket. När kontrollen går ut ur blocket förstörs åtkomsten. Detta betyder att endast det block där den automatiska variabeln deklareras kan komma åt den.
Ett nyckelord auto används för att definiera en klass för automatisk lagring. Som standard innehåller en automatisk variabel ett skräpvärde.
Example, auto int age;
Programmet nedan definierar en funktion med har två lokala variabler
int add(void) {int a=13;auto int b=48;return a+b;}
Vi tar ett annat program som visar omfångsnivån "synlighetsnivå" för autovariabler i varje blockkod som är oberoende av varandra:
#includeint main( ){auto int j = 1;{auto int j= 2;{auto int j = 3;printf ( " %d ", j);}printf ( "\t %d ",j);}printf( "%d\n", j);}
PRODUKTION:
3 2 1
Extern lagringsklass i C
Extern står för extern lagringsklass. Extern lagringsklass används när vi har globala funktioner eller variabler som delas mellan två eller flera filer.
Keyword extern används för att deklarera en global variabel eller funktion i en annan fil för att tillhandahålla referensen för variabel eller funktion som redan har definierats i originalfilen.
Variablerna som definieras med ett externt nyckelord kallas som globala variabler. Dessa variabler är tillgängliga i hela programmet. Observera att den externa variabeln inte kan initieras, den har redan definierats i originalfilen.
Example, extern void display();
Första filen: main.c
#includeextern i;main() {printf("value of the external integer is = %d\n", i);return 0;}
Andra filen: original.c
#includei=48;
Resultat:
value of the external integer is = 48
Följ stegen nedan för att kompilera och köra ovanstående kod
Steg 1) Skapa nytt projekt,
- Välj konsolapplikation
- Klicka på Go
Steg 2) Välj C och klicka på Nästa
Steg 3) Klicka på Nästa
Steg 4) Ange information och klicka på Nästa
Steg 5) Klicka på Slutför
Steg 6) Lägg huvudkoden som visas i föregående program i main.c-filen och spara den
Steg 7) Skapa en ny C-fil [Arkiv -> ny -> Töm fil, spara (som original.c) och lägg till den i det aktuella projektet genom att klicka på "OK" i dialogrutan.
Steg 8) Sätt och spara C-koden för original.c-filen som visas i föregående exempel utan huvudfunktionen ().
Steg 9) Bygg och kör ditt projekt. Resultatet visas i nästa bild
Statisk lagringsklass i C
De statiska variablerna används inom funktion / fil som lokala statiska variabler. De kan också användas som en global variabel
- Statisk lokal variabel är en lokal variabel som behåller och lagrar sitt värde mellan funktionsanrop eller block och förblir synlig endast för den funktion eller det block där den är definierad.
- Statiska globala variabler är globala variabler som endast är synliga för filen där de deklareras.
Example: static int count = 10;
Tänk på att den statiska variabeln har ett initialt initialvärde noll och initialiseras endast en gång under sin livstid.
#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
Globala variabler är tillgängliga i hela filen medan statiska variabler endast är tillgängliga för en viss del av en kod.
Livslängden för en statisk variabel finns i hela programkoden. En variabel som deklareras eller initialiseras med statiska nyckelord innehåller alltid noll som standardvärde.
Registrera lagringsklass i C
Du kan använda registerlagringsklassen när du vill lagra lokala variabler i funktioner eller block i CPU-register istället för RAM för att ha snabb åtkomst till dessa variabler. Till exempel är "räknare" en bra kandidat för att lagras i registret.
Example: register int age;
Nyckelordet registret används för att förklara ett register lagringsklass. Variablerna som deklareras med hjälp av registerlagringsklassen har livslängd under hela programmet.
Det liknar klass för automatisk lagring. Variabeln är begränsad till det specifika blocket. Den enda skillnaden är att variablerna som deklareras med hjälp av registerlagringsklass lagras i CPU-register istället för ett minne. Register har snabbare åtkomst än huvudminnets.
Variablerna som deklareras med hjälp av registerlagringsklassen har inget standardvärde. Dessa variabler deklareras ofta i början av ett 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*/}}
PRODUKTION:
error: address of register variable 'weight' requested
Nästa tabell sammanfattar de viktigaste funktionerna i varje lagringsklass som vanligtvis används i C-programmering
Lagringsklass | Deklaration | Lagring | Standard initialvärde | Omfattning | Livstid |
bil | Inuti en funktion / block | Minne | Oförutsägbar | Inom funktionen / blocket | Inom funktionen / blocket |
Registrera | Inuti en funktion / block | CPU-register | Sopor | Inom funktionen / blocket | Inom funktionen / blocket |
extern | Utanför alla funktioner | Minne | Noll | Hela filen och andra filer där variabeln deklareras som extern | program körtid |
Statisk (lokal) | Inuti en funktion / block | Minne | Noll | Inom funktionen / blocket | program körtid |
Statisk (global) | Utanför alla funktioner | Minne | Noll | Global | program körtid |
Sammanfattning
I denna handledning har vi diskuterat lagringsklasser i C, för att sammanfatta:
- En lagringsklass i C används för att representera ytterligare information om en variabel.
- Lagringsklass representerar omfattningen och livslängden för en variabel.
- Den berättar också vem som kan komma åt en variabel och varifrån?
- Auto, extern, register, statisk är de fyra olika lagringsklasserna i ett C-program.
- En lagringsklassspecifikator på C-språk används för att definiera variabler, funktioner och parametrar.
- auto används för en lokal variabel definierad i ett block eller en funktion
- register används för att lagra variabeln i CPU-register snarare minnesplats för snabb åtkomst.
- Statisk används för både globala och lokala variabler. Var och en har sitt användningsfall inom ett C-program.
- Extern används för datadelning mellan C-projektfiler.