type qualifiers storage classes c
Pomen kvalifikacij tipa in razredov shranjevanja v jeziku C ++.
V tem Ekskluzivna vadbena serija C ++ , bomo temo spremenljivk še razširili in si v tej vadnici ogledali kvalifikatorje vrst in razrede shranjevanja v jeziku C ++. Čeprav je to majhna tema, je zelo pomembna in pomembna za programiranje na C ++.
Kvalifikatorji tipa v jeziku C ++ ne spreminjajo pomena spremenljivk ali entitet, s katerimi se uporabljajo, temveč entiteti dodajo le dodatne informacije.
Kaj se boste naučili:
Vnesite kvalifikacije v C ++
Kvalifikatorji tipa v jeziku C ++ spremenljivki dodajo dodatne lastnosti, na primer spremenljivka, ki je konstanta ali spremenljiva.
kako odpreti datoteko .jar v operacijskem sistemu Windows 10
Kvalifikatorji tipa izražajo način dostopa do spremenljivke ali shranjevanje spremenljivke v pomnilniku, tako da ohranjajo pomen ali interpretacijo spremenljivke enake. Kvalifikatorji tipa na nek način dodajo spremenljivkam večjo natančnost.
V jeziku C ++ je kvalifikator tipa podan tik pred specifikatorjem tipa (podatkovni tip) spremenljivke.
Tipski kvalifikatorji v jeziku C ++ so razvrščeni, kot je prikazano spodaj:
# 1) const
Specifikator tipa “const” je določiti predmete tipa const. Objekta ali spremenljivke const ni mogoče spremeniti, ko je deklariran. Če poskusimo spremeniti objekt ali spremenljivko const, potem prevajalnik sproži napako. O konstantah / dobesednem smo že videli v naši prejšnji vadnici.
Opredelitev konstant z uporabo ključne besede 'const' ustreza kvalifikatorju tipa 'const'.
# 2) hlapne
Kvalifikator tipa „volatile“ pomeni, da se lahko vrednost spremenljivke, označene z volatile, spremeni na druge načine, ki jih program ne določi. Spremenljive spremenljivke se običajno spreminjajo zaradi nekaterih zunanjih dejavnikov in ne nujno zaradi programa. Z drugimi besedami, so hlapne narave.
Na primer, spremenljivko, ki v realni besedi bere temperaturo, lahko spremenimo, saj program morda ne bo v celoti nadzoroval temperature branja.
# 3) spremenljiv
'Mutabilni' kvalifikator tipa omogoča spreminjanje članov ali spremenljivk.
Spremenljivi kvalifikator se običajno uporablja za nestatične člane razreda nekonstralnega in nereferenčnega tipa. Glede na posebne situacije bomo morda potrebovali nekatere spremenljivke, da ostanejo nespremenljive (jih ni mogoče spremeniti), nekatere spremenljivke pa spremenljive. Ta vrsta kvalifikatorja je v veliko pomoč, kadar želimo spremenljive lastnosti.
Razredi shranjevanja v jeziku C ++
Do zdaj smo podrobno razpravljali o vseh spremenljivkah C ++. Videli smo, da so spremenljivke deklarirane s pripadajočimi vrstami podatkov in nato uporabljene v programu. Za popolno določitev spremenljivke potrebujemo tudi razrede shranjevanja poleg njihovih podatkovnih vrst.
Čeprav doslej za spremenljivke nismo določili nobenega razreda pomnilnika, je bil za vse spremenljivke uporabljen privzeti razred shrambe 'auto'.
Kaj so torej razredi za shranjevanje?
Razredi pomnilnika določajo, kako naj prevajalnik obravnava spremenljivko ali funkcijo in kako naj se za spremenljivko dodeli pomnilnik. Določa vidnost ali obseg in življenjsko dobo spremenljivke. Življenjska doba spremenljivke je, kako dolgo bo spremenljivka ostala aktivna.
Vidnost ali obseg spremenljivke je, do katerih funkcij ali modulov bo spremenljivka dostopna. Ti razredi shranjevanja so podani pred podatkovnim tipom spremenljivke.
V C ++ imamo naslednje razrede shranjevanja:
# 1) Razred samodejnega shranjevanja
To je privzeti razred pomnilnika. Razred shrambe »Samodejno« se uporabi za lokalne spremenljivke in jih prevajalnik samodejno dodeli lokalnim spremenljivkam. Lokalne spremenljivke, pred katerimi je ključna beseda ‘auto’, ostanejo aktivne v funkciji, v kateri so deklarirane, in izstopijo iz obsega, ko funkcija zapre.
Če spremenljivke, ki imajo razred samodejnega shranjevanja, niso inicializirane ali jim je dodeljena katera koli vrednost, potem imajo smeti ali nedoločene vrednosti.
Oglejmo si primer samodejnih spremenljivk v programu C ++.
#include using namespace std; int main() { int i; float f; cout<<'Variable i = '< Ker jim nismo pripisali nobene vrednosti, ko natisnemo te spremenljivke, vidimo, da imata obe vrednosti = 0. To je v celoti od prevajalnika odvisno od tega, katerim vrednostim dodeliti samodejno lokalno spremenljivko, če jim v programu še ni dodeljena nobena vrednost .
OPOMBA: Od C ++ 11 se uporablja ključna beseda auto sklepanje o tipu . To pomeni, da lahko uporabimo kodo, kot je auto i = 10, in podatkovni tip I bo neposredno razviden iz inicializatorja, uporabljenega za i. Če torej razglasimo nekaj takega kot »auto float f;«, bo prevajalnik pokazal napako.
Torej običajno ne uporabljamo deklaracije za razred shrambe auto, saj pomeni, da bo privzeto vedno razred samodejnega shranjevanja.
kako razglasiti niz nizov v javi
# 2) Registrirajte razred za shranjevanje
Ko imamo zahtevo, da spremenljivka potrebuje hitrejši dostop, uporabimo razred shrambe registra. Torej, namesto da bi spremenljivke shranile v pomnilnik z naključnim dostopom (RAM), so te spremenljivke shranjene v registru CPU in imajo velikost, ki je enaka velikosti registra.
Poleg tega, ker te spremenljivke nimajo pomnilniške lokacije, s temi spremenljivkami ne moremo uporabljati operatorja &.
Obstoj spremenljivke z razredom pomnilnika Register ne pomeni, da bo spremenljivka vedno shranjena v registru. Namesto tega samo predpostavlja, da je spremenljivka lahko shranjena v registru in je popolnoma odvisna od strojne opreme in izvedbe.
Spremenljivke registra imajo obseg in življenjsko dobo podobni samodejnim spremenljivkam.
Na primer,
#include using namespace std; int main() { int i; register float f; cout<<'Variable i = '< # 3) Razred zunanjega skladišča Razred zunanjega pomnilnika je potreben, kadar je treba spremenljivke deliti med več datotekami. Zunanje spremenljivke imajo globalni obseg in so spremenljivke vidne zunaj datoteke, v kateri so deklarirane.
Ker so zunanje spremenljivke spremenljivke, ki so deklarirane in definirane zunaj v drugi datoteki, se ne inicializirajo.
Zunanje spremenljivke imajo globalni obseg in življenjska doba zunanjih spremenljivk je tako dolga, kot je program, v katerem je razglašena za zaključeno.
Zunanje spremenljivke lahko deklariramo na naslednji način:
extern int temp; int temp;V zgornjem primeru imamo dve deklaraciji spremenljivk z istim imenom, vendar je prva zunanja spremenljivka, definirana drugje. Ta zunanja spremenljivka bo uporabna, če v naš program vključimo izvorno datoteko, v kateri je zunanja spremenljivka temp definirana.
# 4) Razred statičnega shranjevanja
Statični razred pomnilnika pove prevajalniku, naj ohrani vrednost spremenljivke skozi celotno življenjsko dobo programa. Statične spremenljivke so podobne lokalnim spremenljivkam, vendar pred njimi stoji 'statična' ključna beseda.
Za razliko od lokalnih spremenljivk, ki izstopijo iz obsega po izstopu funkcije, statične spremenljivke ne izidejo iz obsega, ko funkcija ali blok izstopi in se njihove vrednosti med klici funkcije ohranijo.
Statične spremenljivke se inicializirajo in shramba se jim dodeli le enkrat v življenjski dobi programa. Statične spremenljivke so inicializirane na 0, če niso že inicializirane med deklaracijo.
Oglejmo si naslednji primer, da bomo bolje razumeli razred statičnega shranjevanja.
#include using namespace std; void printvar() { static int var; var++; cout<<'static variable var = '< Izhod:
printvar klic 1: statična spremenljivka var = 1
printvar call 2: statična spremenljivka var = 2
printvar klic 3: statična spremenljivka var = 3
printvar klic 4: statična spremenljivka var = 4
V zgornji kodi imamo funkcijo 'printvar', v kateri smo razglasili statično spremenljivko tipa tipa int. Nato to spremenljivko povečamo in natisnemo. V glavni funkciji funkcijo printvar pokličemo štirikrat.
Zdaj preverite izhod. Izhod kaže, da se pri vsakem klicu funkcije statična spremenljivka var poveča za 1 glede na prejšnjo vrednost. To je razred statičnega pomnilnika, ki spremenljivki pomaga ohranjati vrednost med klici funkcije. Statična spremenljivka se ne inicializira za vsak klic funkcije.
Opaziti moramo tudi, da smo v funkciji printvar pravkar razglasili statično spremenljivko in je nismo inicializirali. Opaziti je, da kadar statičnih spremenljivk ne inicializiramo, jim dodelijo začetno vrednost 0.
Opomba: Statični razred pomnilnika je mogoče uporabiti tudi za globalne spremenljivke. V tem primeru bo imela spremenljivka globalni obseg in dodatno statično shrambo.
# 5) Spremenljiv razred shranjevanja
Spremenljivi razred pomnilnika se uporablja samo za predmete razreda. Z uporabo spremenljivega razreda pomnilnika lahko član predmeta preglasi funkcijo člana 'const'. To pomeni, da je spremenljivega člana ali predmet mogoče spremeniti s funkcijo člana, ki je 'const'.
Več o funkcijah in objektih const ter spremenljivih članih bomo izvedeli v naših kasnejših vadnicah, ko bomo spoznali objektno usmerjeno programiranje v jeziku C ++.
Zaključek
Tu gre za specifikatorje vrst in razrede shranjevanja v jeziku C ++. Upamo, da smo s pomočjo te vadnice uspeli pojasniti vse koncepte o razredih shranjevanja in specifikatorjih tipov.
V naši prihajajoči vadnici bomo izvedeli več o različnih operaterjih, ki se uporabljajo v C ++, skupaj z njihovo uporabo.
vhodni izhod datoteke c ++
=> Tukaj si oglejte celotno serijo usposabljanj za C ++
Priporočeno branje
- Spremenljivke v C ++
- Python spremenljivke
- Vadnica Java vmesnika in abstraktnega razreda s primeri
- Pretvorite vrste v C ++
- Spremenljivke VBScript: Kako prijaviti in uporabiti spremenljivke - VBScript Dim
- Spremenljivke in funkcije JMeter
- 10 NAJBOLJŠIH ponudnikov brezplačnega shranjevanja v oblaku (spletno shranjevanje 2021)
- Vrste preskušanja selitev: s preskusnimi scenariji za vsako vrsto