Opslagklassen in C:auto, extern, statisch, registerklasse in C
Wat is opslagklasse in C?
Een opslagklasse vertegenwoordigt de zichtbaarheid en een locatie van een variabele. Het vertelt vanuit welk deel van de code we toegang hebben tot een variabele. Een opslagklasse in C wordt gebruikt om de volgende dingen te beschrijven:
- Het variabele bereik.
- De locatie waar de variabele wordt opgeslagen.
- De geïnitialiseerde waarde van een variabele.
- Een levensduur van een variabele.
- Wie heeft toegang tot een variabele?
Er wordt dus een opslagklasse gebruikt om de informatie over een variabele weer te geven.
OPMERKING:Een variabele is niet alleen gekoppeld aan een gegevenstype, de waarde ervan, maar ook aan een opslagklasse.
Er zijn in totaal vier soorten standaard opslagklassen. De onderstaande tabel geeft de opslagklassen in C weer.
Opslagklasse Doel automatisch Het is een standaard opslagklasse.extern Het is een globale variabele.statisch Het is een lokale variabele die een waarde kan retourneren, zelfs wanneer de besturing wordt overgedragen aan de functieaanroep.register Het is een variabele die wordt opgeslagen in een register.In deze C-zelfstudie leer je verschillende soorten opslagklassen in C met voorbeelden-
- Auto-opslagklasse in C
- Externe opslagklasse in C
- Eerste bestand:main.c
- Tweede bestand:original.c
- Statische opslagklasse in C
- Registreer opslagklasse in C
Auto-opslagklasse in C
De variabelen die zijn gedefinieerd met behulp van de auto-opslagklasse worden lokale variabelen genoemd. Auto staat voor automatische opslagklasse. Een variabele bevindt zich standaard in de auto-opslagklasse als deze niet expliciet is opgegeven.
De reikwijdte van een automatische variabele is alleen beperkt met het specifieke blok. Zodra de controle uit het blok gaat, wordt de toegang vernietigd. Dit betekent dat alleen het blok waarin de auto-variabele is gedeclareerd er toegang toe heeft.
Een trefwoord auto wordt gebruikt om een auto-opslagklasse te definiëren. Standaard bevat een automatische variabele een waarde voor afval.
Example, auto int age;
Het onderstaande programma definieert een functie met twee lokale variabelen
int add(void) { int a=13; auto int b=48; return a+b;}
We nemen een ander programma dat het bereikniveau "zichtbaarheidsniveau" toont voor autovariabelen in elke blokcode die onafhankelijk van elkaar zijn:
#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);}
UITGANG:
3 2 1
Externe opslagklasse in C
Extern staat voor externe opslagklasse. Externe opslagklasse wordt gebruikt wanneer we globale functies of variabelen hebben die worden gedeeld tussen twee of meer bestanden.
Zoekwoord extern wordt gebruikt om een globale variabele of functie in een ander bestand te declareren om de referentie te geven van een variabele of functie die al in het originele bestand is gedefinieerd.
De variabelen die met een extern trefwoord zijn gedefinieerd, worden globale variabelen genoemd. Deze variabelen zijn in het hele programma toegankelijk. Merk op dat de externe variabele niet kan worden geïnitialiseerd, deze is al gedefinieerd in het originele bestand.
Example, extern void display();
Eerste bestand:main.c
#include <stdio.h> extern i; main() { printf("value of the external integer is = %d\n", i); return 0;}
Tweede bestand:original.c
#include <stdio.h> i=48;
Resultaat:
value of the external integer is = 48
Volg de onderstaande stappen om de bovenstaande code te compileren en uit te voeren
Stap 1) Nieuw project maken,
- Consoletoepassing selecteren
- Klik op Start
Stap 2) Selecteer C en klik op Volgende
Stap 3) Klik op Volgende
Stap 4) Voer details in en klik op Volgende
Stap 5) Klik op Voltooien
Stap 6) Zet de hoofdcode zoals getoond in het vorige programma in het bestand main.c en sla het op
Stap 7) Maak een nieuw C-bestand [File -> new -> Empty File , sla het op (als origineel.c ) en voeg het toe aan het huidige project door op “OK” te klikken in het dialoogvenster .
Stap 8) Plaats en bewaar de C-code van het originele.c-bestand uit het vorige voorbeeld zonder de functie main().
Stap 9) Bouw en voer uw project uit. Het resultaat wordt getoond in de volgende afbeelding
Statische opslagklasse in C
De statische variabelen worden binnen functie/bestand gebruikt als lokale statische variabelen. Ze kunnen ook als globale variabele worden gebruikt
- Statische lokale variabele is een lokale variabele die zijn waarde behoudt en opslaat tussen functieaanroepen of -blokken en alleen zichtbaar blijft voor de functie of blok waarin deze is gedefinieerd.
- Statische globale variabelen zijn globale variabelen die alleen zichtbaar zijn voor het bestand waarin ze zijn gedeclareerd.
Example: static int count = 10;
Houd er rekening mee dat de statische variabele een standaard beginwaarde nul heeft en slechts één keer in zijn levensduur wordt geïnitialiseerd.
#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);}
Resultaat:
iteration=14 and counter= 7 iteration=15 and counter= 8 iteration=16 and counter= 9
Globale variabelen zijn toegankelijk door het hele bestand, terwijl statische variabelen alleen toegankelijk zijn voor het specifieke deel van een code.
De levensduur van een statische variabele zit in de gehele programmacode. Een variabele die wordt gedeclareerd of geïnitialiseerd met een statisch sleutelwoord, bevat altijd nul als standaardwaarde.
Registreer opslagklasse in C
U kunt de registeropslagklasse gebruiken wanneer u lokale variabelen binnen functies of blokken in CPU-registers wilt opslaan in plaats van RAM om snel toegang te krijgen tot deze variabelen. "Tellers" zijn bijvoorbeeld een goede kandidaat om in het register te bewaren.
Example: register int age;
Het trefwoord registreren wordt gebruikt om een registeropslagklasse te declareren. De variabelen die zijn gedeclareerd met behulp van de registeropslagklasse hebben een levensduur gedurende het hele programma.
Het is vergelijkbaar met de auto-opslagklasse. De variabele is beperkt tot het betreffende blok. Het enige verschil is dat de variabelen die zijn gedeclareerd met behulp van de registeropslagklasse, worden opgeslagen in CPU-registers in plaats van in een geheugen. Register heeft sneller toegang dan dat van het hoofdgeheugen.
De variabelen die zijn gedeclareerd met registeropslagklasse hebben geen standaardwaarde. Deze variabelen worden vaak aan het begin van een programma gedeclareerd.
#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*/} }
UITGANG:
error: address of register variable 'weight' requested
De volgende tabel geeft een overzicht van de belangrijkste kenmerken van elke opslagklasse die vaak worden gebruikt bij C-programmering
Opslagklasse Verklaring Opslag Standaard beginwaarde Reikwijdte Levensduur automatisch Binnen een functie/blokGeheugenOnvoorspelbaarBinnen de functie/blokBinnen het functie/blokregister Binnen een functie/blokCPU RegistersVuilnisBinnen de functie/blokBinnen de functie/blokextern Buiten alle functiesMemoryZeroGehele het bestand en andere bestanden waarin de variabele is gedeclareerd als externprogramma runtimeStatisch (lokaal) Binnen een functie/blockMemoryZeroBinnen de runtime van de functie/blokprogrammaStatisch (algemeen) Buiten alle functiesMemoryZeroGlobalprogram runtimeSamenvatting
In deze tutorial hebben we opslagklassen in C besproken, om samen te vatten:
- Een opslagklasse in C wordt gebruikt om aanvullende informatie over een variabele weer te geven.
- De opslagklasse vertegenwoordigt het bereik en de levensduur van een variabele.
- Het vertelt ook wie toegang heeft tot een variabele en waar vandaan?
- Auto, extern, register, static zijn de vier verschillende opslagklassen in een C-programma.
- Een opslagklasse-specificatie in C-taal wordt gebruikt om variabelen, functies en parameters te definiëren.
- auto wordt gebruikt voor een lokale variabele gedefinieerd binnen een blok of functie
- register wordt gebruikt om de variabele op te slaan in CPU-registers in plaats van geheugenlocatie voor snelle toegang.
- Statisch wordt gebruikt voor zowel globale als lokale variabelen. Elk heeft zijn eigen gebruiksscenario binnen een C-programma.
- Extern wordt gebruikt voor het delen van gegevens tussen C-projectbestanden.
C Taal