type qualifiers storage classes c
Viktigheten av typekvalifiseringskilder og lagringsklasser i C ++.
I dette Eksklusiv C ++ treningsserie , vil vi utvide temaet for variabler ytterligere og se typekvalifiseringskilder og lagringsklasser i C ++ i denne opplæringen. Selv om dette er et lite tema, er det veldig viktig og viktig for C ++ programmering.
Typekvalifiseringene i C ++ endrer ikke betydningen av variablene eller enhetene de brukes med, men de legger bare til ekstra informasjon til enheten.
Hva du vil lære:
Skriv Kvalifiseringer i C ++
Type kvalifiseringskilder i C ++ legger til ekstra egenskaper til variabelen som en variabel som er konstant eller flyktig.
Type kvalifikatorer uttrykker måten en variabel er tilgjengelig på, eller hvor en variabel er lagret i minnet ved å holde betydningen eller tolkningen av variabelen den samme. På en måte legger typekvalifiserere til forbedringer av variabler.
I C ++ spesifiseres typekvalifiseringen rett før typespesifikatoren (datatypen) til variabelen.
Typekvalifisering i C ++ er klassifisert som vist nedenfor:
# 1) konst
Typespesifikator “const” er å definere objektene til typen const. Et const-objekt eller en variabel kan ikke endres når deklarert. Hvis det blir gjort et forsøk på å endre const-objekt eller -variabel, reiser kompilatoren en feil. Vi har allerede sett om konstanter / bokstavelig i vår forrige opplæring.
Definisjonen av konstanter som bruker ‘const’ nøkkelord tilsvarer typekvalifiseringen ‘const’.
# 2) flyktig
Typekvalifiseringen “flyktig” betyr at verdien til variabelen som er merket flyktig kan endres på andre måter som ikke er spesifisert av programmet. Variablene som er ustabile, endres vanligvis på grunn av noen eksterne faktorer og ikke nødvendigvis på grunn av programmet. De er med andre ord ustabile.
For eksempel, en variabel som leser temperaturen i et ord, kan gjøres flyktig, da lesetemperaturen kanskje ikke blir fullstendig kontrollert av programmet.
# 3) muterbar
'Mutable' type kvalifisering gjør medlemmene eller variabelen modifiserbare.
Den mutable kvalifiseringen brukes vanligvis til ikke-statiske klassemedlemmer av ikke-const og ikke-referansetype. I henhold til spesifikke situasjoner kan det hende vi trenger noen variabler for å forbli uforanderlige (kan ikke endres) og noen variabler for å være mutable. Denne typen kvalifiserende er til stor hjelp når vi ønsker foranderlige egenskaper.
Lagringsklasser i C ++
Så langt har vi diskutert alle C ++ variabler i detalj. Vi har sett at variabler blir deklarert med sine respektive datatyper og deretter brukt i programmet. For å kunne definere en variabel fullt ut, krever vi også lagringsklasser bortsett fra datatypene.
Selv om vi ikke har spesifisert noen lagringsklasser til nå for variabler, var det en standard lagringsklasse 'auto' som ble brukt på alle variablene.
Så hva er lagringsklasser?
Lagringsklasser angir hvordan variabelen eller en funksjon skal behandles av kompilatoren og hvordan lagring skal tildeles for en variabel. Den definerer synligheten eller omfanget og levetiden til en variabel. En levetid på variabelen er hvor lenge variabelen kommer til å forbli aktiv.
Synligheten eller omfanget av variabelen er for hvilke funksjoner eller moduler variabelen vil være tilgjengelig. Disse lagringsklassene er spesifisert før datatypen for variabelen.
I C ++ har vi følgende lagringsklasser:
# 1) Auto Storage Class
Dette er standard lagringsklasse. Lagringsklassen “Auto” brukes på de lokale variablene og tildeles automatisk av kompilatoren til lokale variabler. Lokale variabler foran 'auto' nøkkelordet forblir aktive i funksjonen de blir deklarert i og går utenfor omfanget når funksjonen avsluttes.
Hvis variablene som har 'automatisk' lagringsklasse ikke initialiseres eller tildeles noen verdi, har de søppel eller udefinerte verdier.
La oss se et eksempel på autovariabler i et C ++ - program.
#include using namespace std; int main() { int i; float f; cout<<'Variable i = '< # 2) Registrer lagringsklasse Når vi har et krav om at en variabel trenger raskere tilgang, bruker vi registerlagerklasse. Så i stedet for å lagre variablene i RAM (Random Access Memory), lagres disse variablene i CPU-registeret og har en størrelse som er lik et register.
I tillegg, siden disse variablene ikke har en minneplassering, kan vi ikke bruke ‘&’ operatoren med disse variablene.
Å ha en variabel med Registerlagringsklasse garanterer ikke at variabelen alltid vil bli lagret i registeret. I stedet forutsetter det bare at variabelen kan lagres i et register og er helt avhengig av maskinvare og implementering.
Registervariabler har omfanget og levetiden som ligner på de automatiske variablene.
For eksempel,
#include using namespace std; int main() { int i; register float f; cout<<'Variable i = '< # 3) Ekstern lagringsklasse Den eksterne lagringsklassen kreves når variablene må deles på tvers av flere filer. Eksterne variabler har globalt omfang, og disse variablene er synlige utenfor filen de er deklarert i.
Ettersom eksterne variabler er variablene deklarert og definert utenfor i en annen fil, initialiseres de ikke.
Eksterne variabler har globalt omfang, og levetiden til eksterne variabler er like lang som programmet der de er erklært avsluttet.
Eksterne variabler kan erklæres som følger:
extern int temp; int temp;
I eksemplet ovenfor har vi to variabeldeklarasjoner med samme navn, men den første er den eksterne variabelen som er definert andre steder. Denne eksterne variabelen vil være nyttig når vi inkluderer kildefilen der den eksterne variabelen temp er definert i vårt program.
# 4) Statisk lagringsklasse
Statisk lagringsklasse ber kompilatoren om å opprettholde verdien av variabelen gjennom hele programmets levetid. Statiske variabler ligner på de lokale variablene, men innledes med et 'statisk' nøkkelord.
I motsetning til lokale variabler som går utenfor omfanget etter at funksjonen er avsluttet, går ikke statiske variabler ut av omfanget når en funksjon eller blokk avsluttes og verdiene deres bevares mellom funksjonsanrop.
Statiske variabler initialiseres og lagring tildeles dem bare en gang i løpet av et program. Statiske variabler initialiseres til 0 hvis ikke allerede er initialisert under erklæring.
La oss se følgende eksempel for å bedre forstå klassisk lagringsklasse.
#include using namespace std; void printvar() { static int var; var++; cout<<'static variable var = '< Produksjon:
printvar samtale 1: statisk variabel var = 1
printvar kall 2: statisk variabel var = 2
printvar kall 3: statisk variabel var = 3
printvar kall 4: statisk variabel var = 4
I koden ovenfor har vi en funksjon ‘printvar’ der vi har deklarert en statisk variabel var av typen int. Vi øker deretter denne variabelen og skriver den ut. I hovedfunksjonen kaller vi funksjonen printvar fire ganger.
Sjekk nå utdataene. Utgangen viser at den statiske variabelen var økes med 1 fra den forrige verdien for hver funksjonsanrop. Dette er den statiske lagringsklassen som hjelper variabelen til å opprettholde verdien mellom funksjonsanrop. Den statiske variabelen blir ikke initialisert på nytt for hver funksjonsanrop.
Vi bør også legge merke til at i printvar-funksjonen har vi nettopp deklarert den statiske variabelen og ikke initialisert den. Det er bemerkelsesverdig at når vi ikke initialiserer de statiske variablene, tildeles de initialverdien 0.
Merk: Statisk lagringsklasse kan også brukes på globale variabler. I dette tilfellet vil variabelen ha globalt omfang og i tillegg statisk lagring.
# 5) Muterbar lagringsklasse
Den mutable lagringsklassen brukes bare på klasseobjektene. Ved å bruke den mutable lagringsklassen, kan medlem av et objekt overstyre 'const' medlemsfunksjonen. Dette betyr at et foranderlig medlem eller objekt kan modifiseres av en medlemsfunksjon som er 'const'.
Vi lærer mer om const-funksjonene og objektene, samt mutable medlemmer i våre senere opplæringsprogrammer når vi lærer om objektorientert programmering i C ++.
Konklusjon
Dette handler om typespesifikatorer og lagringsklasser i C ++. Vi håper vi klarte å gjøre alle konseptene klare om lagringsklasser og typespesifikatorer gjennom denne veiledningen.
godkjenning krevde brukernavn og passordruter
I vår kommende opplæring vil vi lære mer om de forskjellige operatørene som brukes i C ++ sammen med deres bruk.
=> Sjekk den komplette C ++ treningsserien her
Anbefalt lesing
- Variabler i C ++
- Python-variabler
- Java-grensesnitt og abstrakt klasseopplæring med eksempler
- Skriv konverteringer i C ++
- VBScript-variabler: Hvordan deklarere og bruke variabler - VBScript Dim
- JMeter-variabler og funksjoner
- 10 BESTE gratis skylagringsleverandører (online lagring 2021)
- Typer migrasjonstesting: Med testscenarier for hver type