Tallennusluokat C: ssä: auto, ulkoinen, staattinen, rekisteriluokka C: ssä

Sisällysluettelo:

Anonim

Mikä on C-luokan säilytysluokka?

Tallennusluokka edustaa muuttujan näkyvyyttä ja sijaintia. Se kertoo mistä koodin osasta voimme käyttää muuttujaa. C: n varastoluokkaa käytetään kuvaamaan seuraavia asioita:

  • Vaihteleva laajuus.
  • Muuttujan tallennuspaikka.
  • Muuttujan alustusarvo.
  • Muuttujan käyttöikä.
  • Kuka voi käyttää muuttujaa?

Siten tallennusluokkaa käytetään edustamaan muuttujaa koskevia tietoja.

HUOMAUTUS: Muuttuja ei liity vain tietotyyppiin, sen arvoon, vaan myös tallennusluokkaan.

Vakiotallennusluokkia on kaikkiaan neljää tyyppiä. Alla olevassa taulukossa esitetään C-luokan varastoluokat.

Varastoluokka Tarkoitus
auto Se on oletustallennusluokka.
ulkoinen Se on globaali muuttuja.
staattinen Se on paikallinen muuttuja, joka pystyy palauttamaan arvon myös silloin, kun ohjaus siirretään toimintokutsulle.
rekisteröidy Se on muuttuja, joka on tallennettu rekisteriin.

Tässä C-opetusohjelmassa opit erityyppisiä tallennusluokkia C: ssä esimerkkien avulla-

  • Automaattivarastoluokka C.
  • Ulkoinen säilytysluokka C.
    • Ensimmäinen tiedosto: main.c
    • Toinen tiedosto: alkuperäinen. C
  • Staattinen varastoluokka C.
  • Rekisteröi varastoluokka C: hen

Automaattivarastoluokka C.

Automaattivarastoluokan avulla määriteltyjä muuttujia kutsutaan paikallisiksi muuttujiksi. Auto tarkoittaa automaattista varastoluokkaa. Muuttuja on oletuksena automaattisen tallennustilan luokassa, ellei sitä ole erikseen määritelty.

Automaattimuuttujan soveltamisala on rajoitettu vain tietylle lohkolle. Kun ohjaus menee ulos lohkosta, pääsy tuhoutuu. Tämä tarkoittaa, että vain lohko, jossa automaattinen muuttuja ilmoitetaan, voi käyttää sitä.

Avainsanalla auto määritetään automaattisen tallennustilan luokka. Oletusarvoisesti automaattinen muuttuja sisältää roska-arvon.

Example, auto int age;

Alla oleva ohjelma määrittelee toiminnon, jolla on kaksi paikallista muuttujaa

int add(void) {int a=13;auto int b=48;return a+b;}

Otamme toisen ohjelman, joka näyttää kunkin lohkokoodin automaattisten muuttujien laajuuden "näkyvyysaste", jotka ovat toisistaan ​​riippumattomasti:

#include int main( ){auto int j = 1;{auto int j= 2;{auto int j = 3;printf ( " %d ", j);}printf ( "\t %d ",j);}printf( "%d\n", j);}

LÄHTÖ:

 3 2 1 

Ulkoinen säilytysluokka C.

Extern tarkoittaa ulkoista varastoluokkaa. Ulkoista tallennustilaluokkaa käytetään, kun meillä on globaaleja toimintoja tai muuttujia, jotka jaetaan kahden tai useamman tiedoston välillä.

Avainsanan ulkoa käytetään ilmoittamaan yleinen muuttuja tai funktio toisessa tiedostossa antamaan muuttujan tai funktion viite, joka on jo määritelty alkuperäisessä tiedostossa.

Ulkoisella avainsanalla määriteltyjä muuttujia kutsutaan globaaleiksi muuttujiksi. Nämä muuttujat ovat käytettävissä koko ohjelmassa. Huomaa, että ulkoista muuttujaa ei voida alustaa, se on jo määritelty alkuperäisessä tiedostossa.

Example, extern void display();

Ensimmäinen tiedosto: main.c

#include extern i;main() {printf("value of the external integer is = %d\n", i);return 0;}

Toinen tiedosto: alkuperäinen. C

#include i=48;

Tulos:

 value of the external integer is = 48

Noudata seuraavia ohjeita kääntääksesi yllä olevan koodin ja ajaaksesi sen

Vaihe 1) Luo uusi projekti,

  1. Valitse konsolisovellus
  2. Napsauta Siirry

Vaihe 2) Valitse C ja napsauta Seuraava

Vaihe 3) Napsauta Seuraava

Vaihe 4) Anna tiedot ja napsauta Seuraava

Vaihe 5) Napsauta Valmis

Vaihe 6) Laita pääkoodi edellisen ohjelman mukaisesti main.c-tiedostoon ja tallenna se

Vaihe 7) Luo uusi C-tiedosto [File -> new -> Empty File, save (as original.c) ja lisää se nykyiseen projektiin napsauttamalla "OK" valintaikkunassa.

Vaihe 8) Laita ja tallenna edellisessä esimerkissä esitetyn original.c-tiedoston C-koodi ilman main () -funktiota.

Vaihe 9) Rakenna ja suorita projektisi. Tulos on esitetty seuraavassa kuvassa

Staattinen varastoluokka C.

Staattisia muuttujia käytetään funktion / tiedoston sisällä paikallisin staattisina muuttujina. Niitä voidaan käyttää myös globaalina muuttujana

  • Staattinen paikallinen muuttuja on paikallinen muuttuja, joka säilyttää ja tallentaa arvon funktiokutsujen tai lohkon välillä ja pysyy näkyvissä vain funktiolle tai lohkolle, jossa se on määritelty.
  • Staattiset globaalimuuttujat ovat globaaleja muuttujia, jotka näkyvät vain tiedostolle, johon se on ilmoitettu.
Example: static int count = 10;

Pidä mielessä, että staattisella muuttujalla on oletusarvo nolla ja se alustetaan vain kerran elinaikanaan.

#include  /* function declaration */void next(void);static int counter = 7; /* global variable */main() {while(counter<10) {next();counter++; }return 0;}void next( void ) { /* function definition */static int iteration = 13; /* local static variable */iteration ++;printf("iteration=%d and counter= %d\n", iteration, counter);}

Tulos:

iteration=14 and counter= 7iteration=15 and counter= 8iteration=16 and counter= 9

Globaalit muuttujat ovat käytettävissä koko tiedostossa, kun taas staattiset muuttujat ovat käytettävissä vain tietylle koodin osalle.

Staattisen muuttujan elinikä on koko ohjelmakoodissa. Staattisella avainsanalla ilmoitettu tai alustettu muuttuja sisältää aina nollan oletusarvona.

Rekisteröi varastoluokka C: hen

Voit käyttää rekisteritallennusluokkaa, kun haluat tallentaa paikalliset muuttujat funktioihin tai lohkoihin keskusyksikön rekistereihin RAM-muistin sijaan, jotta pääset nopeasti näihin muuttujiin. Esimerkiksi "laskurit" ovat hyvä ehdokas, joka tallennetaan rekisteriin.

Example: register int age;

Avainsana rekisteriä käytetään julistaa rekisteri varastointi luokassa. Rekisteritallennusluokan avulla ilmoitettujen muuttujien elinikä on koko ohjelma.

Se on samanlainen kuin automaattisen tallennuksen luokka. Muuttuja on rajoitettu tiettyyn lohkoon. Ainoa ero on, että rekisteritallennusluokan avulla ilmoitetut muuttujat tallennetaan CPU-rekistereihin muistin sijaan. Rekisterillä on nopeampi pääsy kuin päämuistilla.

Rekisterimuistiluokalla ilmoitetuilla muuttujilla ei ole oletusarvoa. Nämä muuttujat ilmoitetaan usein ohjelman alussa.

#include  /* function declaration */main() {{register int weight;int *ptr=&weight ;/*it produces an error when the compilation occurs ,we cannot get a memory location when dealing with CPU register*/}}

LÄHTÖ:

error: address of register variable 'weight' requested

Seuraava taulukko esittää yhteenvedon kunkin C-ohjelmoinnissa yleisesti käytetyn tallennusluokan pääominaisuuksista

Varastoluokka Julistus Varastointi Oletusarvo Soveltamisala Elinikä
auto Toiminnon / lohkon sisällä Muisti Arvaamaton Toiminnon / lohkon sisällä Toiminnon / lohkon sisällä
rekisteröidy Toiminnon / lohkon sisällä CPU-rekisterit Roska Toiminnon / lohkon sisällä Toiminnon / lohkon sisällä
ulkoinen Kaikkien toimintojen ulkopuolella Muisti Nolla Kirjoita tiedosto ja muut tiedostot, joissa muuttuja ilmoitetaan ulkoisena ohjelman ajonaikainen
Staattinen (paikallinen) Toiminnon / lohkon sisällä Muisti Nolla Toiminnon / lohkon sisällä ohjelman ajonaikainen
Staattinen (globaali) Kaikkien toimintojen ulkopuolella Muisti Nolla Maailmanlaajuinen ohjelman ajonaikainen

Yhteenveto

Tässä opetusohjelmassa olemme keskustelleet tallennustilaluokista C: ssä yhteenvetona:

  • Varastoluokkaa C: ssä käytetään edustamaan muuttujaa koskevia lisätietoja.
  • Varastoluokka edustaa muuttujan laajuutta ja käyttöikää.
  • Se kertoo myös, kuka voi käyttää muuttujaa ja mistä?
  • Automaattinen, ulkoinen, rekisteröidy, staattinen ovat neljä erilaista tallennustilaluokkaa C-ohjelmassa.
  • C-kielellä olevaa varastoluokan määrittelyä käytetään muuttujien, toimintojen ja parametrien määrittelemiseen.
  • autoa käytetään lohkossa tai toiminnossa määriteltyyn paikalliseen muuttujaan
  • Rekisteriä käytetään muuttujan tallentamiseen suorittimen rekistereihin pikemminkin muistipaikkaan nopeaa käyttöä varten.
  • Staattista käytetään sekä globaaleihin että paikallisiin muuttujiin. Jokaisella on oma käyttötapansa C-ohjelmassa.
  • Ulkoa käytetään tietojen jakamiseen C-projektitiedostojen välillä.