type qualifiers storage classes c
Betydningen af typekvalifikatorer og lagerklasser i C ++.
I denne Eksklusiv C ++ træningsserie , vi udvider emnet for variabler yderligere og ser typekvalifikatorer og lagringsklasser i C ++ i denne vejledning. Selvom dette er et lille emne, er det meget vigtigt og vigtigt for C ++ programmering.
Typekvalifikatorerne i C ++ ændrer ikke betydningen af de variabler eller enheder, de bruges sammen med, men de tilføjer kun ekstra information til enheden.
Hvad du lærer:
Skriv kvalifikatorer i C ++
Typekvalifikatorer i C ++ tilføjer ekstra egenskaber til variablen, ligesom en variabel er konstant eller flygtig.
Typekvalifikatorer udtrykker den måde, hvorpå en variabel er tilgængelig, eller hvor en variabel er gemt i hukommelsen ved at holde betydningen eller fortolkningen af variablen den samme. På en måde tilføjer typekvalifikatorer mere raffinement til variabler.
I C ++ specificeres typekvalifikator lige før variabelens typespecifikator (datatype).
Typekvalifikatorer i C ++ er klassificeret som vist nedenfor:
# 1) konst
Typespecifikator “const” er at definere objekterne af typen const. Et const-objekt eller en variabel kan ikke ændres, når de er erklæret. Hvis der forsøges at ændre const-objekt eller -variabel, rejser compileren en fejl. Vi har allerede set om konstanter / bogstavelig i vores tidligere tutorial.
Definitionen af konstanter ved hjælp af 'const' nøgleord svarer til typekvalifikatoren 'const'.
# 2) flygtig
Typekvalificatoren 'flygtig' betyder, at værdien af variablen markeret som flygtig kan ændres på andre måder, som ikke er specificeret af programmet. De variable, der er ustabile, ændres normalt på grund af nogle eksterne faktorer og ikke nødvendigvis på grund af programmet. Med andre ord er de flygtige i naturen.
For eksempel, en variabel, der læser temperaturen i et rigtigt ord, kan gøres flygtig, da læsningstemperaturen muligvis ikke styres fuldstændigt af programmet.
# 3) kan ændres
'Mutable' type kvalifikator gør medlemmerne eller variablen modificerbare.
Den ændrede kvalifikator anvendes normalt til ikke-statiske klassemedlemmer af ikke-const og ikke-referencetype. I henhold til specifikke situationer har vi muligvis brug for nogle variabler for at forblive uforanderlige (kan ikke ændres) og nogle variabler for at være mutable. Denne type kvalifikator er til stor hjælp, når vi ønsker ændrede egenskaber.
Opbevaringsklasser i C ++
Indtil videre har vi diskuteret alle C ++ -variabler i detaljer. Vi har set, at variabler deklareres med deres respektive datatyper og derefter bruges i programmet. For fuldt ud at definere en variabel kræver vi også lagerklasser bortset fra deres datatyper.
Selvom vi indtil nu ikke har specificeret nogen lagringsklasser for variabler, var der en standardlagerklasse 'auto', som blev anvendt på alle variablerne.
Så hvad er opbevaringsklasser?
Lagerklasser angiver, hvordan variablen eller en funktion skal behandles af compileren, og hvordan lageret skal tildeles til en variabel. Det definerer synligheden eller omfanget og levetiden for en variabel. Variablenes levetid er hvor længe variablen skal forblive aktiv.
Variabelens synlighed eller omfang er, hvilke funktioner eller moduler variablen vil være tilgængelig. Disse lagringsklasser er specificeret før datatypen for variablen.
I C ++ har vi følgende lagringsklasser:
# 1) Auto Storage Class
Dette er standardlagerklassen. Lagringsklassen “Auto” anvendes på de lokale variabler og tildeles automatisk af compileren til lokale variabler. Lokale variabler forud for 'auto' nøgleordet forbliver aktive i den funktion, hvori de erklæres, og går uden for rækkevidde, når funktionen afsluttes.
Hvis variablerne med 'automatisk' lagerklasse ikke initialiseres eller tildeles nogen værdi, har de skrald eller udefinerede værdier.
Lad os se et eksempel på automatiske variabler i et C ++ - program.
#include using namespace std; int main() { int i; float f; cout<<'Variable i = '< Da vi ikke har tildelt nogen værdier til dem, når vi udskriver disse variabler, ser vi, at begge har værdier = 0. Dette er helt afhængig af kompilatoren for, hvilke værdier der skal tildeles automatisk lokal variabel, hvis de ikke allerede er tildelt nogen værdi i programmet .
BEMÆRK: Fra og med C ++ 11 bruges det automatiske nøgleord til skriv slutning . Dette betyder, at vi kan bruge en kode som auto i = 10, og datatypen af I udledes direkte fra initialisereren, der bruges til i. Derfor, hvis vi erklærer noget som 'auto float f;', så vil compileren vise en fejl.
Så vi bruger normalt ikke erklæring til lagerklasse auto, da det antydes, at standard altid vil være automatisk lagerklasse.
# 2) Registrer lagerklasse
Når vi har et krav om, at en variabel har brug for hurtigere adgang, bruger vi registerlagerklassen. Så i stedet for at gemme variablerne i Random Access Memory (RAM) gemmes disse variabler i CPU-registeret og har en størrelse svarende til størrelsen på et register.
Da disse variabler ikke har en hukommelsesplacering, kan vi ikke bruge '&' operatoren med disse variabler.
At have en variabel med registerlagerklassen garanterer ikke, at variablen altid vil blive gemt i registret. I stedet antager det bare, at variablen kan være gemt i et register og er helt afhængig af hardware og implementering.
Registervariabler har omfang og levetid svarende til de automatiske variabler.
For eksempel,
#include using namespace std; int main() { int i; register float f; cout<<'Variable i = '< # 3) Ekstern opbevaringsklasse Den eksterne lagerklasse er påkrævet, når variablerne skal deles på tværs af flere filer. Eksterne variabler har globalt omfang, og disse variabler er synlige uden for den fil, hvori de erklæres.
Da eksterne variabler er de variabler, der er deklareret og defineret udenfor i en anden fil, initialiseres de ikke.
Eksterne variabler har globalt omfang, og levetiden for eksterne variabler er så længe det program, hvori de erklæres afsluttet.
Eksterne variabler kan erklæres som følger:
extern int temp; int temp;
I ovenstående eksempel har vi to variabeldeklarationer med samme navn, men den første er den eksterne variabel, der er defineret andetsteds. Denne eksterne variabel vil være nyttig, når vi inkluderer kildefilen, hvor den eksterne variabeltemp er defineret i vores program.
# 4) Statisk opbevaringsklasse
Statisk lagringsklasse fortæller kompilatoren at opretholde værdien af variablen gennem hele programmets levetid. Statiske variabler svarer til de lokale variabler, men indledes med et 'statisk' nøgleord.
I modsætning til lokale variabler, der falder uden for rækkevidde, efter at funktionen er afsluttet, går statiske variabler ikke ud af omfanget, når en funktion eller blok afsluttes, og deres værdier bevares mellem funktionsopkald.
Statiske variabler initialiseres, og lagring tildeles dem kun en gang i programmets levetid. Statiske variabler initialiseres til 0, hvis ikke allerede initialiseres under erklæring.
Lad os se følgende eksempel for bedre at forstå den statiske lagerklasse.
#include using namespace std; void printvar() { static int var; var++; cout<<'static variable var = '< Produktion:
printvar opkald 1: statisk variabel var = 1
printvar opkald 2: statisk variabel var = 2
printvar opkald 3: statisk variabel var = 3
printvar opkald 4: statisk variabel var = 4
I ovenstående kode har vi en funktion 'printvar', hvor vi har deklareret en statisk variabel var af typen int. Derefter øges denne variabel og udskrives. I hovedfunktionen kalder vi på printvar-funktionen fire gange.
Kontroller nu output. Outputtet viser, at den statiske variabel for hvert funktionsopkald øges med 1 fra den tidligere værdi. Dette er den statiske lagerklasse, som hjælper variablen med at opretholde sin værdi mellem funktionsopkald. Den statiske variabel geninitialiseres ikke for hvert funktionsopkald.
Vi skal også bemærke, at vi i printvar-funktionen lige har deklareret den statiske variabel og ikke initialiseret den. Det er bemærkelsesværdigt, at når vi ikke initialiserer de statiske variabler, tildeles de startværdien 0.
Bemærk: Statisk lagringsklasse kan også anvendes på globale variabler. I dette tilfælde vil variablen have globalt omfang og desuden statisk lagring.
# 5) Omskiftelig opbevaringsklasse
Den ændrede lagringsklasse anvendes kun på klasseobjekterne. Ved at anvende den ændrede lagringsklasse kan medlem af et objekt tilsidesætte 'const' medlemsfunktionen. Dette betyder, at et foranderligt medlem eller objekt kan modificeres af en medlemsfunktion, der er 'const'.
Vi lærer mere om const-funktionerne og objekterne samt mutable medlemmer i vores senere tutorials, når vi lærer om objektorienteret programmering i C ++.
Konklusion
Dette handler om typespecifikatorer og lagringsklasser i C ++. Vi håber, at vi var i stand til at gøre alle koncepter klare om lagerklasser og typespecifikatorer gennem denne vejledning.
bedste mobile spion app til iPhone
I vores kommende vejledning lærer vi mere om de forskellige operatører, der bruges i C ++ sammen med deres brug.
=> Tjek den komplette C ++ træningsserie her
Anbefalet læsning
- Variabler i C ++
- Python-variabler
- Java-interface og abstrakt klasseundervisning med eksempler
- Skriv konverteringer i C ++
- VBScript-variabler: Sådan erklæres og bruges variabler - VBScript Dim
- JMeter-variabler og -funktioner
- 10 BEDSTE gratis Cloud Storage-udbydere (Online Storage 2021)
- Typer af migreringstest: Med testscenarier for hver type