Johdanto C-säilytysluokkiin

Jokainen arvo tai numero on tallennettava jonnekin myöhempää käyttöä varten, eikö niin? Tämä voidaan tehdä käyttämällä muuttujia C. Muuttujat ovat tallennusalueita, joita käytetään ohjelmissamme. Jokainen muuttuja on tietyn tyyppinen, kuten kokonaisluku, merkki, ja sillä on myös tietty koko ja asettelu tyypistään riippuen. Jokainen muuttujatyyppi tulisi tallentaa tiettyyn osaan muistia, ja sillä on oltava rajoitetut tai erityiset käyttöoikeudet. C-luokan tallennusluokat määrittelevät, mihin muistiosaan jokainen muuttuja tulisi tallentaa, ja päättää myös muuttujan laajuuden (näkyvyyden). Tallennusluokkia on neljä tyyppiä: automaattinen, ulkoinen, staattinen ja rekisteri. Yksi tallennusmääritys voidaan mainita muuttujan mukana.

Tyypit säilytysluokista C: ssä

C-luokan säilytysluokkatyypit ovat seuraavat

1. Automaattinen tallennusluokka

Kaikki funktiossa tai lohkossa ilmoitetut muuttujat tallennetaan oletusarvoisesti automaattiseen määrittäjään, vaikka sitä ei olisi nimenomaisesti määritelty. Tämän tallennusluokan määrittelijä on 'auto'. Automaattisessa tallennusluokassa olevien muuttujien laajuus tai näkyvyys on paikallista sen määrittämälle lohkolle tai toiminnolle. Muuttuja tuhoutuu heti, kun olemme poistuneet toiminnosta tai lohkosta.

Tämä voidaan selittää paremmin esimerkillä. Mieti seuraavaa esimerkkiä:

Koodi:

int main() (
int i = 2;
( int i = 4;
printf(“%d\n”, i);
)
printf(“%d\n”, i);
)

lähtö:

4

2

Tyyppisen kokonaisluvun muuttuja I julkaistaan ​​ensin sillä, jolla on arvo 2. Seuraavaksi silmukan tai lohkon sisällä saman kokonaisluvutyypin muuttuja I ilmoitetaan sille osoitetulla arvolla 4. Jos säilytysmääritystä ei mainita, se otetaan oletuksena automaattiseksi. Ensimmäisessä printf-lausunnossa, joka mainitaan lohkon sisällä, tulostetaan 4 tulostamalla arvon I. taas. Toisessa printf-lauseessa, joka mainitaan lohkon ulkopuolella, tulostetaan arvo I: nä 2, arvo, joka on mainittu ulkopuolella kortteli. On parempi alustaa jokin arvo automaattimuuttujille, koska joskus on mahdollista saada roskien arvo, jos alustamista ei tehdä. Tämä esimerkki antaa selkeän kuvan automaattisista muuttujista ja paikallisesta laajuudesta.

2. Rekisteröi tallennusluokka

Rekisterin tallennusluokkaan tallennetuilla muuttujilla on myös paikallinen laajuus, mikä tarkoittaa, että niihin pääsee tai näkyy vain siinä lohkossa, jossa ne julistetaan. Tämä tallennus on samanlainen kuin auto, mutta tärkein ero on, että automaattiset muuttujat tallennetaan muistiin, kun taas rekisterimuuttujat tallennetaan CPU-rekistereihin. Tämä tehdään, jos haluamme käyttää muuttujaa hyvin usein. Niitä voidaan käyttää nopeammin. Vain muutama muuttuja tallennetaan rekisterimääritteillä. Jos rekisterissä ei ole tilaa, se tallennetaan vain muistiin. Rekisterimuuttujille ei määritetä alkuperäistä arvoa. Myöskään operaattoria & (osoite) ei voida käyttää rekisterimuuttujiin. Esimerkiksi muuttujia, joita käytetään laskureihin tai vastaaviin käyttötyyppeihin, tallennetaan rekisterimääritteellä.

3. Staattinen säilytysluokka

Muuttuja, olipa se globaali tai paikallinen, tallennetaan staattisella määrittelijällä staattisessa tallennusluokassa, kun muuttuja on ilmoitettava kerran ja arvo on säilytettävä. Kun muuttuja julistetaan staattiseksi, arvo tallennetaan tai säilytetään toimintopuhelujen välillä. Pysyvä tallennustila luodaan ja se ilmoitetaan vain kerran. Kun paikallinen muuttuja julistetaan staattiseksi, sille luodaan pysyvä tallennustila ja arvo säilytetään joka kerta, kun sitä käytetään. Samoin kuin tavallisen paikallisen muuttujan laajuudessa, staattiset paikalliset muuttujat näkyvät myös vain toiminnolle tai lohkolle, jossa se on määritelty. Kun globaali muuttuja julistetaan staattiseksi, staattisen paikallisen tapaan, luodaan pysyvä tallennustila, joka ilmoitetaan vain kerran. Mutta vaikka se on globaali, nämä muuttujat ovat näkyvissä vain tiedostossa, jossa se on määritelty.

Staattiset muuttujat voidaan kuvata selvästi seuraavan esimerkin avulla:

Koodi:

int samplefunc() (
static int a = 0;
a = a+2;
return a;
)
int main() (
int result1 = samplefunc();
int result2 = samplefunc();
printf("%d\n", result1);
printf("%d\n", result2);
)

lähtö:

2

4

Tässä yllä olevassa ohjelmassa, kun näytefunc () kutsutaan, muuttuja a määritetään ja alustetaan ensimmäistä kertaa, ja sille luodaan pysyvä tallennustila. Funktion matemaattisen lausekkeen avulla a: n arvoksi tulee sitten 2. Mutta kun samaa näytefunkkia () kutsutaan toisen kerran, muuttujaa a ei määritetä tai alusteta uudelleen, vaan se ottaa viimeisen säilytetyn arvon ja jatkaa toiminnolla jolloin lopullinen tulos saadaan 4. Tämä on staattisten muuttujien tärkein käyttö ja etu.

4. Ulkoinen säilytysluokka

Ulkopuolena ilmoitettu muuttuja kuvaa, että muuttuja on määritelty muualla toisessa ohjelmassa. Näitä ulkoisia muuttujia käytetään, kun haluamme, että yhtä ohjelmassa määriteltyä muuttujaa tai funktiota käytetään myös toisessa tiedostossa. Muuttujat, joilla on ulkoinen määrittely, tallennetaan ulkoiseen tallennusluokkaan. Kun muuttuja ilmoitetaan ulkoiseksi on ohjelma, se määrittelee ulkoisen kytkennän, joten sitä ei määritetä tai alusteta uudelleen. Tallennustila on varattu vain yhdelle ja myös alustettu vain kerran. Jos ulkoiset muuttujat alustetaan uudelleen toisella arvolla ulkoisessa ohjelmassa, saamme virheen sanomalla 'muuttujan uudelleenmääritys'.

Ulkoiset muuttujat selitetään seuraavan esimerkin avulla:

Koodi:

Prg1.c

int count;
int main() (
count = 10;
)

Prg2.c

extern int count;
int main() (
printf(“%d”, count);
)

lähtö:

10

Tässä kokonaislukumuuttuja lasketaan ensimmäisessä C-ohjelmassa (Prg1.c) ja päätoiminnon sisällä se alustetaan arvoon 10. Toisessa C-ohjelmassa sama laskentamuuttuja ilmoitetaan käyttämällä ulkoista määrittäjää, joka määrittelee, että siellä on ulkoinen kytkentä ja arvo haetaan varastoinnista ja arvo 10 annetaan arvolaskelmalle, kun tulostamme sen toisessa ohjelmassa. Tämä on ulkoisten muuttujien käyttö. Siten eri tarkoituksista riippuen kutakin tallennusluokkaa käytetään sopiville muuttujille ja se ilmoitetaan vastaavilla määritteillä.

Suositellut artikkelit

Tämä on opas C-tallennusluokkiin. Tässä keskustellaan säilytysluokkityypeistä, jotka sisältävät automaattisen tallennusluokan, rekisterin tallennusluokan, staattisen tallennusluokan ja ulkoisen tallennusluokan. Voit myös katsoa seuraavia artikkeleita saadaksesi lisätietoja -

  1. Mikä on JavaBeans?
  2. ES6 vs ES5
  3. C ++ vs Visual C ++
  4. C vs C ++ Suorituskyky