Što je klasa pohrane u C ++-u i njeni tipovi?



U ovom blogu klasa pohrane, s primjerima ćemo pogledati razne klase pohrane korištene u C ++-u, poput auto, register, static, extern i mutable.

Klasa pohrane u C ++ definira vijek trajanja i vidljivost varijable / funkcija. Životno vrijeme je trajanje do kojeg varijabla ostaje aktivna, a vidljivost je dostupnost varijable iz različitih modula programa. Ovaj pomaže u traganju za postojanjem određene varijable tijekom izvođenja programa. U ovom blogu klasa pohrane pogledat ćemo razne klase pohrane korištene u C ++.

Započnimo.





Što je klasa pohrane u C ++?

Svaka varijabla u C ++ ima tip podataka i klasu pohrane. Tip podataka određuje vrstu podataka koji se mogu pohraniti u varijablu kao što su int, float, char itd. Klasa pohrane kontrolira dva različita svojstva varijable: vijek trajanja i opseg.

Vidjeli biste da svaka varijabla ima tip podataka, ali do sada možda niste vidjeli nijednu klasu pohrane koja je pridružena varijabli. Zapravo, ako ne definirate klasu memorije, kompajler joj automatski dodjeljuje zadanu klasu memorije. Klasa pohrane varijable daje informacije o mjestu pohrane varijable u memoriji, zadanoj početnoj vrijednosti, opsegu varijable i njezinom vijeku trajanja.



Vrste klase pohrane

U programu C ++ postoji pet klasa pohrane:

  • auto
  • Registar
  • statički
  • vanjski
  • promjenjiv

Detaljno ćemo razgovarati o svakom od klasa pohrane.

Klasa automatske pohrane

Klasa automatske (automatske) pohrane zadana je klasa pohrane za sve lokalne varijable koje su deklarirane unutar funkcije ili bloka. Ključna riječ auto rijetko se koristi tijekom pisanja a Program C ++ .



Opseg automatskih varijabli nalazi se unutar funkcije ili bloka tamo gdje su deklarirane i ne može im se pristupiti izvan te funkcije ili bloka. Također mu se može pristupiti unutar ugniježđenih blokova unutar nadređenog bloka / funkcije u kojem je deklarirana automatska varijabla.

Auto varijablama možete pristupiti izvan njihovog opsega pomoću varijable pokazivača. Morate ukazati na isto mjesto memorije na kojem se nalaze varijable.

Njegov vijek trajanja jednak je vijeku trajanja funkcije. Kad se izvrši izvršavanje funkcije, varijabla se uništava.

Prema zadanim postavkama, vrijednost smeća im se dodjeljuje tijekom deklaracije.

Sintaksa:

tip podataka var_name1 [= vrijednost]

ili

automatski tip podataka var_name1 [= vrijednost]

U gornjem primjeru definirane su dvije varijable s istom klasom pohrane. Automatski se može koristiti samo za definiranje lokalnih varijabli, tj. Unutar funkcija.

Registrirajte klasu pohrane

Kao što i samo ime govori, klasa pohrane registra koristi se za deklariranje varijabli registra. Sva funkcionalizacija varijable registra ista je kao i automatske varijable, osim što prevodilac pokušava pohraniti te varijable u registar mikroprocesora ako je dostupan besplatni registar. Ako besplatni registar nije dostupan, oni se tada pohranjuju samo u memoriju.

Dakle, operacije nad registarskim varijablama mnogo su brže od operacija ostalih varijabli koje su pohranjene u memoriji tijekom izvođenja programa.

Općenito, nekoliko varijabli kojima je potrebno često pristupati u programu deklariraju se u klasi pohrane registra kako bi se poboljšalo vrijeme izvođenja programa. Adresa varijable registra ne može se dobiti pomoću pokazivača.

Maksimalna veličina varijable jednaka je veličini registra (tj. Približno jedna riječ). Na njega se ne može primijeniti unarni operator '&', jer nema memorijsko mjesto.

Sintaksa:

registrirati tip podataka var_name1 [= vrijednost]

Primjer:

kako pretvoriti dvostruko u int
{registriraj int pi}

Definiranje ‘registra’ ne znači da će varijabla biti pohranjena u registar. Može se pohraniti u registar, ovisno o hardveru i ograničenjima implementacije.

Pogledajmo primjer klasa registra i automatske pohrane.

Primjer:

#include using namespace std // deklariranje varijable koja treba biti vanjska // inicijalna vrijednost se također može inicijalizirati u x int x void autoStorageClass () {printf ('nDemonstrating auto classnn') // deklariranje automatske varijable (jednostavno // funkcionira i pisanje 'int a = 32') int num = 32 // ispis automatske varijable 'a' printf ('Vrijednost varijable' num '' 'deklarirana kao auto:% dn', num) printf ( '--------------------------------')} void registerStorageClass () {printf ('nDemonstrating register classnn') / / deklariranje registarske varijable register char c = 'G' // ispis varijable registra 'b' printf ('Vrijednost varijable' c '' 'deklarirana kao registar:% dn', c) printf ('---- ---------------------------- ')} int main () {// Za demonstraciju automatske klase pohrane autoStorageClass () // Za demonstraciju registriraj klasu pohrane registerStorageClass () return 0}

Izlaz:

Izlaz - Klasa pohrane u C ++ - EdurekaKlasa statičke pohrane

Klasa statičke pohrane koristi se za deklariranje statičke varijable . Statičke varijable čuvaju svoju vrijednost (tj. Zadnju vrijednost) čak i kad su izvan njihovog opsega. Statičke varijable inicijaliziraju se samo jednom &postoje do prekida programa.

Memorija se dodjeljuje samo jednom statičkoj varijabli i ne dodjeljuje se nova memorija jer nisu ponovno deklarirane. Globalnim statičkim varijablama može se pristupiti bilo gdje u programu. Po defaultu im prevodilac dodjeljuje vrijednost 0.

U C ++-u, kada se statički koristi na članu podataka klase, uzrokuje da svi objekti njegove klase dijele samo jednu kopiju tog člana.

Sintaksa:

statički tip podataka var_name1 [= vrijednost]

Primjer:

#include void function (void) static int c = 5 // Globalna statička varijabla 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 } 

Izlaz:

Klasa vanjskog skladišta

Klasa eksterne pohrane potrebna je kada varijable treba dijeliti u više datoteka. Vanjske varijable imaju globalni opseg i te su varijable vidljive izvan datoteke u kojoj su deklarirane. Vanjska varijabla vidljiva je svim programima. Koristi se ako dvije ili više datoteka dijele istu varijablu ili funkciju.

Životni vijek vanjskih varijabli je onoliko dugo koliko je ukinut program u kojem su deklarirane. Normalna globalna varijabla može se napraviti i extern postavljanjem ključne riječi ‘extern’ prije njene deklaracije / definicije u bilo kojoj funkciji / bloku.

Kada upotrebljavate ‘extern’, varijabla se ne može inicijalizirati jer sve što je potrebno jest usmjeravanje imena varijable na mjesto za pohranu koje je prethodno definirano.

Sintaksa

vanjski tip podataka var_name1

Primjer

#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 } 

Ovdje se ključna riječ extern koristi za deklariranje cnt-a u drugoj datoteci. Sada sastavite ove dvije datoteke na sljedeći način & minus

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

To će stvoriti izvršni program za pisanje, pokušati izvršiti pisanje i provjeriti rezultat kako slijedi & minus

$. / pisati

5

Krećući se prema klasi pohrane u C ++-u, pogledajmo posljednju, tj. Promjenjivu klasu pohrane.

Promjenjiva klasa pohrane

Promjenjivi specifikator odnosi se samo na objekte klase, što članu objekta omogućuje nadjačavanje funkcije const člana. Odnosno, promjenjivi član može se mijenjati funkcijom const člana.

Napokon, pogledajmo usporednu tablicu kako bismo razumjeli razlike između različitih klasa pohrane.

Klasa skladištenja

Ključna riječ

Doživotno

što je postupak u sql-u

Vidljivost

Početna vrijednost

Automatski

auto

Funkcijski blok

Lokalno

Smeće

Vanjski

vanjski

Cijeli program

Globalno

Nula

Statički

statički

Cijeli program

Lokalno

Nula

Registar

preopterećenje funkcije c ++

Registar

Funkcijski blok

Lokalno

Smeće

Promjenjivo

promjenjiv

Razred

Lokalno

Smeće

Nakon prolaska kroz gornje programe C ++, shvatili biste koje su različite klase pohrane u C ++ i kako ih implementirati. Nadam se da je ovaj blog informativan i da vam dodaje dodanu vrijednost.

Tako smo došli do kraja ovog članka o 'Klase pohrane u C ++'.

Ako želite saznati više, pogledajte Edureka, pouzdane tvrtke za internetsko učenje. Edurekin tečaj za obuku i certificiranje Java J2EE i SOA osmišljen je kako bi vas osposobio za osnovne i napredne Java koncepte zajedno s raznim Java okvirima poput Hibernate & Spring.

Imate pitanje za nas? Molimo vas da ga spominjete u odjeljku za komentare ovog bloga i javit ćemo vam se što je prije moguće.