Mikä on C ++ -tyyppinen tallennustilaluokka ja sen tyypit?



Tässä tallennustilaluokkien blogissa tarkastelemme erilaisia ​​C ++: ssa käytettyjä tallennusluokkia, kuten auto, register, staattinen, ulkoinen ja muutettava esimerkkien avulla.

Varastoluokka C ++ määrittää muuttujan / toimintojen käyttöiän ja näkyvyyden. Elinikä on kesto, jonka ajan muuttuja pysyy aktiivisena, ja näkyvyys on muuttujan saavutettavuus ohjelman eri moduuleista. Tämä auttaa jäljittämään tietyn muuttujan olemassaoloa ohjelman ajon aikana. Tässä tallennustilaluokkien blogissa tarkastelemme erilaisia ​​C ++: ssa käytettyjä tallennustilaluokkia.

Aloitetaanpa.





Mikä on säilytysluokka C ++: ssa?

Jokaisella C ++: n muuttujalla on tietotyyppi ja tallennusluokka. Tietotyyppi määrittää tietotyypin, joka voidaan tallentaa muuttujaan, kuten int, float, char jne. Tallennusluokka ohjaa muuttujan kahta erilaista ominaisuutta: elinikä ja laajuus.

Olisit nähnyt, että kaikilla muuttujilla on tietotyyppi, mutta et ole vielä nähnyt muuttujaan liitettyä tallennusluokkaa. Itse asiassa, jos et määritä tallennustilaluokkaa, kääntäjä määrittää sille automaattisesti oletusvarastoluokan. Muuttujan tallennusluokka antaa tietoja muuttujan tallennussijainnista muistissa, oletusarvo, muuttujan laajuus ja sen käyttöikä.



Tallennusluokan tyypit

C ++ -ohjelmassa on viisi tallennustilaluokkaa:

  • auto
  • rekisteröidy
  • staattinen
  • ulkoinen
  • vaihteleva

Keskustellaan kustakin varastoluokasta yksityiskohtaisesti.

Automaattinen tallennusluokka

Automaattinen (automaattinen) tallennusluokka on oletustallennusluokka kaikille paikallisille muuttujille, jotka ilmoitetaan toiminnon tai lohkon sisällä. Automaattista avainsanaa käytetään harvoin kirjoitettaessa a C ++ -ohjelma .



Automaattisten muuttujien laajuus on toiminnossa tai lohkossa, jossa ne on ilmoitettu, eikä sitä voida käyttää kyseisen toiminnon tai lohkon ulkopuolella. Sitä voidaan käyttää myös sisäkkäisissä lohkoissa päälohkossa / toiminnossa, jossa automaattinen muuttuja ilmoitettiin.

Voit käyttää automaattisia muuttujia niiden soveltamisalan ulkopuolella osoittimen muuttujien avulla. Sinun on osoitettava samaan muistipaikkaan, jossa muuttujat asuvat.

Sen käyttöikä on sama kuin toiminnon käyttöikä. Kun toiminnon suorittaminen on valmis, muuttuja tuhotaan.

Oletusarvoisesti heille määritetään roska-arvo ilmoituksen aikana.

Syntaksi:

tietotyyppi var_name1 [= arvo]

tai

automaattinen tietotyyppi var_name1 [= arvo]

Edellä olevassa esimerkissä määritetään kaksi muuttujaa samalla tallennusluokalla. Automaattia voidaan käyttää vain paikallisten muuttujien määrittelyyn eli funktioiden sisällä.

Rekisteröi tallennustilaluokka

Kuten nimestä voi päätellä, rekisterimuuttujien ilmoittamiseen käytetään rekisterin tallennusluokkaa. Rekisterimuuttujan kaikki toiminnot ovat samat kuin automaattisen muuttujan, paitsi että kääntäjä yrittää tallentaa nämä muuttujat mikroprosessorin rekisteriin, jos käytettävissä on ilmainen rekisteri. Jos ilmaista rekisteriä ei ole käytettävissä, ne tallennetaan sitten vain muistiin.

Siten rekisterimuuttujien toiminta on paljon nopeampaa kuin muilla muuttujilla, jotka tallennetaan muistiin ohjelman ajon aikana.

Yleensä muutama muuttuja, joita on käytettävä usein ohjelmassa, ilmoitetaan rekisterivarastoluokassa ohjelman ajoajan parantamiseksi. Rekisterimuuttujan osoitetta ei voida saada osoittimilla.

Muuttujan enimmäiskoko on yhtä suuri kuin rekisterin koko (eli noin yksi sana). Sillä ei voi olla unaarista '&' -operaattoria, koska sillä ei ole muistipaikkaa.

Syntaksi:

rekisteröi tietotyyppi var_name1 [= arvo]

Esimerkki:

kuinka käyttää jaettua menetelmää java
{rekisteröi int pi}

Rekisterin määritteleminen ei tarkoita, että muuttuja tallennetaan rekisteriin. Se voidaan tallentaa rekisteriin laitteisto- ja toteutusrajoitusten mukaan.

Tarkastellaan esimerkkiä rekisteröinti- ja automaattisen tallennuksen luokista.

Esimerkki:

#include nimitilan käyttäminen std // muuttujan julistaminen ulkoiseksi // intiaaliarvo voidaan myös alustaa x int x void autoStorageClass () {printf ('nDemonstrating auto classnn') // julistaa automaattisen muuttujan (yksinkertaisesti // kirjoitetaan 'int a = 32' toimii myös) int num = 32 // tulostetaan automaattinen muuttuja 'a' printf ('Muuttujan' num 'arvo', joka on ilmoitettu automaattiseksi:% dn ', num) printf ( '--------------------------------')} void registerStorageClass () {printf ('nDemonstrating register classnn') / / rekisterimuuttujan ilmoittaminen rekisteri char c = 'G' // rekisterimuuttujan 'b' printf ('rekisteriksi ilmoitetun muuttujan' c '' arvo:% dn ', c) printf (' ---- ---------------------------- ')} int main () {// Esittelemään automaattisen tallennustilaluokan autoStorageClass () // Esittelemään register Storage Class registerStorageClass () return 0}

Tuotos:

Tuotos - Varastoluokka C ++ - EdurekaStaattinen varastoluokka

Staattista varastoluokkaa käytetään ilmoitukseen staattiset muuttujat . Staattiset muuttujat säilyttävät arvonsa (eli viimeisen arvon), vaikka ne eivät kuulu niiden soveltamisalaan. Staattiset muuttujat alustetaan vain kerran &olemassa ohjelman päättymiseen saakka.

Muisti varataan vain kerran staattiselle muuttujalle, eikä uutta muistia osoiteta, koska niitä ei ilmoiteta uudelleen. Staattisia muuttujia voidaan käyttää missä tahansa ohjelmassa. Kääntäjä antaa heille oletusarvoisesti arvon 0.

C ++: ssa, kun staattista käytetään luokan datajäsenessä, se aiheuttaa vain yhden jäsenen kopion jaettavaksi luokan kaikille objekteille.

Syntaksi:

staattinen tietotyyppi var_name1 [= arvo]

Esimerkki:

#include void-funktio (void) staattinen int c = 5 // Globaali staattinen muuttuja main () {while (c--) {function ()} return 0} void-funktio (void) {staattinen int cnt = 2 cnt ++ vakio :: cout<< 'cnt is ' << cnt std::cout << ' and c is ' << c << std::endl } 

Voiko rakentaja olla yksityinen

Tuotos:

Ulkoinen säilytysluokka

Ulkoinen tallennusluokka vaaditaan, kun muuttujat on jaettava useiden tiedostojen kesken. Ulkoisilla muuttujilla on globaali laajuus ja nämä muuttujat näkyvät sen tiedoston ulkopuolella, jossa ne on ilmoitettu. Ulkoinen muuttuja näkyy kaikille ohjelmille. Sitä käytetään, jos kahdella tai useammalla tiedostolla on sama muuttuja tai toiminto.

Ulkoisten muuttujien käyttöikä on niin kauan kuin ohjelma, johon se on ilmoitettu, lopetetaan. Normaali globaali muuttuja voidaan tehdä ulkoiseksi myös sijoittamalla avainsana extern sen ilmoituksen / määritelmän eteen mihin tahansa toimintoon / lohkoon.

Kun käytät 'extern' -muuttujaa, sitä ei voi alustaa, koska muuttujan nimi osoittaa muuttujan nimen aiemmin määritettyyn tallennuspaikkaan.

Syntaksi

ulkoinen tietotyyppi var_name1

Esimerkki

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

Toinen tiedosto: support.cpp

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

Tässä ulkoista avainsanaa käytetään ilmoittamaan cnt toisesta tiedostosta. Kokoa nyt nämä kaksi tiedostoa seuraavasti & miinus

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

Tämä tuottaa kirjoitettavan suoritettavan ohjelman, yritä suorittaa kirjoitus ja tarkista tulos seuraavasti & miinus

$. / kirjoita

5

Kun siirrytään eteenpäin C ++ -tallennusluokan kanssa, katsotaanpa viimeinen, ts. Muutettavissa oleva tallennusluokka.

Muuttuva säilytysluokka

Muokattava määritin koskee vain luokan objekteja, mikä sallii kohteen jäsenen ohittaa const-jäsenfunktion. Toisin sanoen muunneltavaa jäsentä voidaan muokata konst-jäsenfunktiolla.

Katsotaan viimeinkin vertailutaulukkoa ymmärtääksemme eroja eri varastoluokkien välillä.

Varastoluokka

Avainsana

Elinikä

Näkyvyys

Alkuarvo

Automaattinen

auto

Toimintolohko

Paikallinen

Roska

Ulkoinen

ulkoinen

Koko ohjelma

Maailmanlaajuinen

Nolla

Staattinen

staattinen

Koko ohjelma

Paikallinen

Nolla

Rekisteröidy

rekisteröidy

Toimintolohko

Paikallinen

Roska

Vaihteleva

vaihteleva

Luokka

Paikallinen

c ++ puhelu viitteenä

Roska

Nyt kun olet käynyt läpi yllä olevat C ++ -ohjelmat, olisit ymmärtänyt, mitkä ovat C ++: n eri tallennustilaluokat ja miten ne voidaan toteuttaa. Toivon, että tämä blogi on informatiivinen ja lisäarvoa sinulle.

Siksi olemme päässeet tämän artikkelin 'Tallennusluokat C ++: ssa' loppuun.

Jos haluat oppia lisää, tutustu Edureka, luotettava verkko-oppimisyritys. Edurekan Java J2EE- ja SOA-koulutus- ja sertifiointikurssit on suunniteltu kouluttamaan sekä ydin- että edistyneitä Java-konsepteja sekä erilaisia ​​Java-kehyksiä, kuten Hibernate & Spring.

Onko sinulla kysymys meille? Mainitse se tämän blogin kommenttiosassa ja otamme sinuun yhteyttä mahdollisimman pian.