Kaj je razred shranjevanja v jeziku C ++ in njegove vrste?



V tem blogu o razredih za shranjevanje si bomo s primeri ogledali različne razrede za shranjevanje, ki se uporabljajo v jeziku C ++, kot so auto, register, static, extern in mutable.

Razred shranjevanja v C ++ definira življenjsko dobo in vidnost spremenljivke / funkcij. Življenjska doba je trajanje, do katerega spremenljivka ostane aktivna, vidnost pa je dostopnost spremenljivke iz različnih modulov programa. To pomaga slediti obstoju določene spremenljivke med izvajanjem programa. V tem blogu o razredih za shranjevanje si bomo ogledali različne razrede za shranjevanje, ki se uporabljajo v jeziku C ++.

Začnimo.





Kaj je razred shranjevanja v jeziku C ++?

Vsaka spremenljivka v jeziku C ++ ima podatkovni tip in razred shranjevanja. Podatkovni tip določa vrsto podatkov, ki jih je mogoče shraniti v spremenljivko, kot so int, float, char itd. Razred za shranjevanje nadzoruje dve različni lastnosti spremenljivke: življenjsko dobo in obseg.

Videli bi, da ima vsaka spremenljivka podatkovni tip, vendar morda doslej ne bi videli nobenega razreda shrambe, ki bi bil priložen spremenljivki. Če ne določite razreda pomnilnika, mu prevajalnik samodejno dodeli privzeti razred pomnilnika. Razred shranjevanja spremenljivke daje informacije o mestu shranjevanja spremenljivke v pomnilniku, privzeti začetni vrednosti, obsegu spremenljivke in njeni življenjski dobi.



Vrste prostora za shranjevanje

V programu C ++ obstaja pet razredov pomnilnika:

  • samodejno
  • register
  • statična
  • zunanji
  • spremenljiv

Podrobno se pogovorimo o vsakem od razredov shranjevanja.

Razred samodejnega shranjevanja

Razred samodejnega (samodejnega) shranjevanja je privzeti razred pomnilnika za vse lokalne spremenljivke, ki so razglašene znotraj funkcije ali bloka. Ključna beseda auto se med pisanjem a redko uporablja Program C ++ .



Obseg samodejnih spremenljivk je znotraj funkcije ali bloka, kjer so bile prijavljene, in do njih ni mogoče dostopati zunaj te funkcije ali bloka. Do njega lahko dostopate tudi znotraj ugnezdenih blokov v nadrejenem bloku / funkciji, v katerem je bila deklarirana samodejna spremenljivka.

Do samodejnih spremenljivk lahko dostopate zunaj njihovega obsega z uporabo kazalne spremenljivke. Kazati morate na isto mesto pomnilnika, kjer so spremenljivke.

Njegova življenjska doba je enaka življenjski dobi funkcije. Ko je izvedba funkcije končana, se spremenljivka uniči.

Privzeto jim je med deklaracijo dodeljena vrednost smeti.

Sintaksa:

tip podatkov var_name1 [= vrednost]

ali

samodejni podatkovni tip var_name1 [= vrednost]

V zgornjem primeru sta dve spremenljivki definirani z istim pomnilniškim razredom. Samodejno je mogoče uporabiti samo za določanje lokalnih spremenljivk, torej znotraj funkcij.

Registriraj razred shranjevanja

Kot že ime pove, se razred shrambe registra uporablja za razglasitev spremenljivk registra. Vsa funkcionalizacija spremenljivke registra je enaka spremenljivki auto, le da prevajalnik poskuša te spremenljivke shraniti v register mikroprocesorja, če je na voljo brezplačen register. Če brezplačen register ni na voljo, se ti shranijo samo v pomnilnik.

Tako so operacije na registrskih spremenljivkah veliko hitrejše kot pri drugih spremenljivkah, ki so shranjene v pomnilniku med izvajanjem programa.

Na splošno je v razredu pomnilnika registra prijavljenih nekaj spremenljivk, do katerih je treba pogosto dostopati v programu, da se izboljša čas delovanja programa. Naslova spremenljivke registra ni mogoče dobiti s kazalci.

Največja velikost spremenljivke je enaka velikosti registra (tj. Približno ena beseda). Na njej ne more biti uveljavljen unarni operator '&', saj nima pomnilniške lokacije.

Sintaksa:

register podatkovnega tipa var_name1 [= vrednost]

Primer:

kako uporabiti tostring metodo
{registriraj int pi}

Opredelitev „register“ ne pomeni, da bo spremenljivka shranjena v registru. Morda bo shranjen v registru, odvisno od strojne opreme in omejitev izvajanja.

Oglejmo si primer razredov registra in samodejnega shranjevanja.

Primer:

#include using namespace std // deklariranje spremenljivke, ki naj bo eksterna // incialna vrednost se lahko inicializira tudi v x int x void autoStorageClass () {printf ('nDemonstrating auto classnn') // deklariranje samodejne spremenljivke (preprosto // deluje tudi pisanje 'int a = 32') int num = 32 // tiskanje samodejne spremenljivke 'a' printf ('Vrednost spremenljivke' num '' ', deklarirane kot samodejno:% dn', num) printf ( '--------------------------------')} void registerStorageClass () {printf ('nDemonstrating register classnn') / / razglasitev registrske spremenljivke register char c = 'G' // tiskanje spremenljivke registra 'b' printf ('Vrednost spremenljivke' c '' ', deklarirane kot register:% dn', c) printf ('---- ---------------------------- ')} int main () {// za prikaz samodejnega razreda pomnilnika autoStorageClass () // za prikaz register Shranjevalni razred registerStorageClass () vrni 0}

Izhod:

Izhod - Razred shranjevanja v jeziku C ++ - EdurekaStatični razred za shranjevanje

Statični razred pomnilnika se uporablja za izjavo statične spremenljivke . Statične spremenljivke ohranijo svojo vrednost (tj. Zadnjo vrednost), tudi če niso v dosegu. Statične spremenljivke se inicializirajo samo enkrat &obstajajo do prenehanja programa.

Statični spremenljivki se pomnilnik dodeli samo enkrat in nov pomnilnik se ne dodeli, ker niso ponovno deklarirani. Globalne statične spremenljivke so dostopne kjer koli v programu. Privzeto jim prevajalnik dodeli vrednost 0.

V jeziku C ++, ko se statični član uporablja v podatkovnem članu razreda, povzroči, da vsi predmeti njegovega razreda delijo samo eno kopijo tega člana.

Sintaksa:

statični tip podatkov var_name1 [= vrednost]

Primer:

#include void function (void) static int c = 5 // Globalna statična spremenljivka main () {while (c--) {function ()} return 0} void function (void) {static int cnt = 2 cnt ++ std :: cout<< 'cnt is ' << cnt std::cout << ' and c is ' << c << std::endl } 

Izhod:

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. Spremenljivka extern je vidna vsem programom. Uporablja se, če imata dve ali več datotek isto spremenljivko ali funkcijo.

java koda za povezavo z mysql

Življenjska doba zunanjih spremenljivk je tako dolga, kolikor se program, v katerem je navedena, zaključi. Normalno globalno spremenljivko lahko naredimo tudi zunanjo, tako da postavimo ključno besedo 'extern' pred njeno izjavo / definicijo v katero koli funkcijo / blok.

Ko uporabljate ‘extern’, spremenljivke ni mogoče inicializirati, saj vse, kar počne, usmerja ime spremenljivke na predhodno definirano mesto shranjevanja.

Sintaksa

zunanji tip podatkov var_name1

Primer

#include int cnt extern void write_extern () main () {cnt = 5 write_extern ()}

Druga datoteka: support.cpp

#include extern int cnt void write_extern (void) {std :: cout<< 'Count is ' << cnt << std::endl } 

Tu se ključna beseda extern uporablja za razglasitev cnt v drugi datoteki. Zdaj sestavite ti dve datoteki, kot sledi & minus

$ g ++ main.cpp support.cpp -o pisanje

To bo ustvarilo izvršljiv program za pisanje, poskusite izvesti zapis in preverite rezultat, kot sledi & minus

$. / piši

5.

Če nadaljujemo s pomnilniškim razredom v jeziku C ++, si oglejmo še zadnji, tj.

Spremenljiv razred shranjevanja

Spremenljiv specifikator velja samo za predmete razreda, kar članu predmeta omogoča, da preglasi funkcijo const member. To pomeni, da je spremenljiv član mogoče spremeniti s funkcijo const member.

Končno si oglejmo primerjalno tabelo, da bomo razumeli razlike med različnimi razredi shranjevanja.

Razred shranjevanja

Ključna beseda

Življenska doba

Vidnost

Začetna vrednost

Samodejno

samodejno

Funkcijski blok

Lokalno

Smeti

Zunanji

zunanji

Celoten program

Globalno

Nič

Statično

statična

Celoten program

Lokalno

Nič

Registrirajte se

register

c vs c ++ vs java

Funkcijski blok

Lokalno

Smeti

Spremenljivo

spremenljiv

Razred

Lokalno

Smeti

Po pregledu zgornjih programov C ++ bi razumeli, kateri so različni razredi shranjevanja v C ++ in kako jih uporabiti. Upam, da je ta spletni dnevnik informativen in dodane vrednosti za vas.

Tako smo prišli do konca tega članka o „Razredih shranjevanja v jeziku C ++“.

Če želite izvedeti več, si oglejte Edureka, zaupanja vredno podjetje za spletno učenje. Edurekin tečaj za usposabljanje in certificiranje Java J2EE in SOA je zasnovan tako, da vas usposobi za temeljne in napredne koncepte Java, skupaj z različnimi Java okviri, kot sta Hibernate & Spring.

Imate vprašanje za nas? Prosimo, omenite to v oddelku za komentarje tega spletnega dnevnika, mi pa se vam bomo javili v najkrajšem možnem času.