Hvad er opbevaringsklasse i C?
En lagerklasse repræsenterer synligheden og placeringen af en variabel. Den fortæller fra hvilken del af koden vi kan få adgang til en variabel. En lagringsklasse i C bruges til at beskrive følgende ting:
- Det variable omfang.
- Det sted, hvor variablen gemmes.
- Den initialiserede værdi af en variabel.
- En levetid for en variabel.
- Hvem har adgang til en variabel?
Således bruges en lagringsklasse til at repræsentere informationen om en variabel.
BEMÆRK: En variabel er ikke kun forbundet med en datatype, dens værdi, men også en lagringsklasse.
Der er i alt fire typer standardlagerklasser. Tabellen nedenfor repræsenterer lagringsklasser i C.
Opbevaringsklasse | Formål |
auto | Det er en standardlagerklasse. |
ekstern | Det er en global variabel. |
statisk | Det er en lokal variabel, der er i stand til at returnere en værdi, selv når kontrol overføres til funktionsopkaldet. |
Tilmeld | Det er en variabel, der er gemt inde i et register. |
I denne C-tutorial lærer du forskellige typer lagringsklasser i C med eksempler-
- Auto Storage Class i C
- Ekstern opbevaringsklasse i C
- Første fil: main.c
- Anden fil: original.c
- Statisk opbevaringsklasse i C
- Registrer lagerklasse i C
Auto Storage Class i C
Variablerne defineret ved hjælp af automatisk lagringsklasse kaldes lokale variabler. Auto står for automatisk lagringsklasse. En variabel er som standard i automatisk lagerklasse, hvis den ikke udtrykkeligt er angivet.
Omfanget af en automatisk variabel er kun begrænset med den bestemte blok. Når kontrollen går ud af blokken, ødelægges adgangen. Dette betyder, at kun den blok, hvori den automatiske variabel erklæres, kan få adgang til den.
Et nøgleord auto bruges til at definere en automatisk lagringsklasse. Som standard indeholder en automatisk variabel en skraldværdi.
Example, auto int age;
Programmet nedenfor definerer en funktion med har to lokale variabler
int add(void) {int a=13;auto int b=48;return a+b;}
Vi tager et andet program, der viser omfanget "synlighedsniveau" for automatiske variabler i hver blokkode, der er uafhængigt af hinanden:
#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
Ekstern opbevaringsklasse i C
Extern står for ekstern lagringsklasse. Ekstern lagringsklasse bruges, når vi har globale funktioner eller variabler, der deles mellem to eller flere filer.
Keyword ekstern bruges til at erklære en global variabel eller funktion i en anden fil for at give referencen for variablen eller funktionen, som allerede er defineret i den oprindelige fil.
De variabler, der er defineret ved hjælp af et eksternt nøgleord, kaldes som globale variabler. Disse variabler er tilgængelige i hele programmet. Bemærk, at den eksterne variabel ikke kan initialiseres, den er allerede defineret i den originale fil.
Example, extern void display();
Første fil: main.c
#includeextern i;main() {printf("value of the external integer is = %d\n", i);return 0;}
Anden fil: original.c
#includei=48;
Resultat:
value of the external integer is = 48
Følg nedenstående trin for at kompilere og køre ovenstående kode
Trin 1) Opret nyt projekt,
- Vælg konsolapplikation
- Klik på Start
Trin 2) Vælg C, og klik på Næste
Trin 3) Klik på Næste
Trin 4) Indtast detaljer, og klik på Næste
Trin 5) Klik på Udfør
Trin 6) Sæt hovedkoden som vist i det forrige program i main.c-filen, og gem den
Trin 7) Opret en ny C-fil [File -> new -> Tom File, gem (som original.c) og tilføj den til det aktuelle projekt ved at klikke på "OK" i dialogboksen.
Trin 8) Sæt og gem C-koden for original.c-filen vist i det foregående eksempel uden hovedfunktionen ().
Trin 9) Byg og kør dit projekt. Resultatet vises i næste figur
Statisk opbevaringsklasse i C
De statiske variabler bruges inden for funktion / fil som lokale statiske variabler. De kan også bruges som en global variabel
- Statisk lokal variabel er en lokal variabel, der bevarer og gemmer sin værdi mellem funktionsopkald eller blokering og kun er synlig for den funktion eller blok, som den er defineret i.
- Statiske globale variabler er globale variabler, der kun er synlige for den fil, hvori de erklæres.
Example: static int count = 10;
Husk, at den statiske variabel har en standardindledningsværdi nul og initialiseres kun en gang i sin levetid.
#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 tilgængelige i hele filen, mens statiske variabler kun er tilgængelige for den bestemte del af en kode.
Levetiden for en statisk variabel er i hele programkoden. En variabel, der erklæres eller initialiseres ved hjælp af statiske nøgleord, indeholder altid nul som standardværdi.
Registrer lagerklasse i C
Du kan bruge registerlagerklassen, når du vil gemme lokale variabler inden for funktioner eller blokke i CPU-registre i stedet for RAM for at få hurtig adgang til disse variabler. For eksempel er "tællere" en god kandidat til at blive gemt i registret.
Example: register int age;
Nøgleordet register bruges til at erklære et register storage class. De variabler, der er deklareret ved hjælp af registerlagerklassen, har levetid i hele programmet.
Det svarer til klassen automatisk lagring. Variablen er begrænset til den bestemte blok. Den eneste forskel er, at de variabler, der er erklæret ved hjælp af registerlagerklassen, lagres inde i CPU-registre i stedet for en hukommelse. Registret har hurtigere adgang end hovedhukommelsen.
Variablerne deklareret ved hjælp af registerlagerklassen har ingen standardværdi. Disse variabler erklæres ofte i starten af 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*/}}
PRODUKTION:
error: address of register variable 'weight' requested
Den næste tabel opsummerer de vigtigste funktioner i hver lagerklasse, som ofte bruges i C-programmering
Opbevaringsklasse | Erklæring | Opbevaring | Standard startværdi | Anvendelsesområde | Livstid |
auto | Inde i en funktion / blok | Hukommelse | Uforudsigelig | Inden for funktionen / blokken | Inden for funktionen / blokken |
Tilmeld | Inde i en funktion / blok | CPU-registre | Affald | Inden for funktionen / blokken | Inden for funktionen / blokken |
ekstern | Uden for alle funktioner | Hukommelse | Nul | Hele filen og andre filer, hvor variablen erklæres som ekstern | programkørselstid |
Statisk (lokal) | Inde i en funktion / blok | Hukommelse | Nul | Inden for funktionen / blokken | programkørselstid |
Statisk (global) | Uden for alle funktioner | Hukommelse | Nul | Global | programkørselstid |
Resumé
I denne vejledning har vi diskuteret lagringsklasser i C for at opsummere:
- En lagringsklasse i C bruges til at repræsentere yderligere information om en variabel.
- Opbevaringsklasse repræsenterer omfanget og levetiden for en variabel.
- Det fortæller også, hvem der kan få adgang til en variabel, og hvorfra?
- Auto, ekstern, register, statisk er de fire forskellige lagringsklasser i et C-program.
- En lagerklassespecifikator på C-sprog bruges til at definere variabler, funktioner og parametre.
- auto bruges til en lokal variabel defineret inden for en blok eller funktion
- register bruges til at gemme variablen i CPU-registre snarere hukommelsesplacering for hurtig adgang.
- Statisk bruges til både globale og lokale variabler. Hver enkelt har sin brugssag inden for et C-program.
- Extern bruges til datadeling mellem C-projektfiler.