C-tallennusluokat: Automaattinen, Ulkoinen, Staattinen, Rekisteri (esimerkkejä)

Mikä on säilytysluokka C:ssä?

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

  • Muuttuva laajuus.
  • Sijainti, johon muuttuja tallennetaan.
  • Muuttujan alustettu arvo.
  • Muuttujan elinikäinen.
  • Kuka voi käyttää muuttujaa?

Näin ollen tallennusluokkaa käytetään edustamaan muuttujaa koskevia tietoja.

HUOMAUTUS: Muuttuja ei liity pelkästään a:han tietotyyppi, sen arvo, mutta myös varastointiluokka.

Mitkä ovat C:n säilytysluokat?

Tavallisia säilytysluokkia on yhteensä neljä. Alla oleva taulukko esittää varastoluokat C-muodossa.

Varastointiluokka Tarkoitus
auto Se on oletustallennusluokka.
ulkoinen Se on globaali muuttuja.
staattinen Se on paikallinen muuttuja, joka pystyy palauttamaan arvon, vaikka ohjaus siirretään funktiokutsulle.
ilmoittautua Se on muuttuja, joka on tallennettu rekisteriin.

Automaattinen tallennusluokka C

Automaattisen tallennusluokan avulla määritettyjä muuttujia kutsutaan paikallisiksi muuttujiksi. Auto tarkoittaa automaattista säilytysluokkaa. Muuttuja on oletusarvoisesti automaattisen tallennusluokan luokassa, jos sitä ei ole erikseen määritetty.

Automaattisen muuttujan laajuus on rajoitettu vain tietylle lohkolle. Kun ohjaus menee ulos lohkosta, pääsy tuhoutuu. Tämä tarkoittaa, että vain se lohko, jossa automaattinen muuttuja on ilmoitettu, voi käyttää sitä.

Automaattisen tallennusluokan määrittämiseen käytetään avainsanaa auto. Oletusarvoisesti automaattinen muuttuja sisältää roskaarvon.

Example, auto int age;

Alla oleva ohjelma määrittelee funktion, jossa on kaksi paikallista muuttujaa

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

Otamme toisen ohjelman, joka näyttää laajuustason "näkyvyystason" automaattisille muuttujille kussakin lohkokoodissa, jotka ovat toisistaan ​​riippumattomia:

#include <stdio.h>
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 edustaa ulkoista tallennusluokkaa. Ulkoista tallennusluokkaa käytetään, kun meillä on globaaleja toimintoja tai muuttujia, jotka jaetaan kahden tai useamman tiedoston kesken.

avainsana ulkoinen käytetään yleisen muuttujan tai funktion ilmoittamiseen toisessa tiedostossa, jotta saadaan viite muuttujalle tai funktiolle, joka on jo määritetty alkuperäisessä tiedostossa.

Ulkoisella avainsanalla määritettyjä muuttujia kutsutaan globaaleiksi muuttujiksi. Nämä muuttujat ovat käytettävissä koko ohjelman ajan. Huomaa, että ulkoista muuttujaa ei voi alustaa, se on jo määritetty alkuperäisessä tiedostossa.

Example, extern void display();

Ensimmäinen tiedosto: main.c

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

Toinen tiedosto: original.c

#include <stdio.h>
i=48;

Tulos:

 value of the external integer is = 48


Kääntääksesi ja suorittaaksesi yllä olevan koodin, noudata alla olevia ohjeita

Vaihe 1) Luo uusi projekti,

  1. Valitse Konsolisovellus
  2. Napsauta Siirry

Ulkoinen säilytysluokka C

Vaihe 2) Valitse C ja napsauta Seuraava

Ulkoinen säilytysluokka C

Vaihe 3) Napsauta Seuraava

Ulkoinen säilytysluokka C

Vaihe 4) Anna tiedot ja napsauta Seuraava

Ulkoinen säilytysluokka C

Vaihe 5) Napsauta Valmis

Ulkoinen säilytysluokka C

Vaihe 6) Laita pääkoodi kuten edellisessä ohjelmassa näytettiin main.c-tiedostoon ja tallenna se

Ulkoinen säilytysluokka C

Vaihe 7) Luo uusi C-tiedosto [Tiedosto -> uusi -> Tyhjä tiedosto , tallenna (alkuperäisenä.c) ja lisää se nykyiseen projektiin napsauttamalla "OK" valintaikkunassa.

Ulkoinen säilytysluokka C

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

Ulkoinen säilytysluokka C

Vaihe 9) Rakenna ja aja projektisi. Tulos näkyy seuraavassa kuvassa

Ulkoinen säilytysluokka C

Staattinen säilytysluokka C

Staattisia muuttujia käytetään funktiossa/tiedostossa paikallisina staattisina muuttujina. Niitä voidaan käyttää myös a globaali muuttuja

  • Staattinen paikallinen muuttuja on paikallinen muuttuja, joka säilyttää ja tallentaa arvonsa funktiokutsujen tai lohkon välillä ja jää näkyviin vain sille funktiolle tai lohkolle, jossa se on määritelty.
  • Staattiset globaalit muuttujat ovat näkyviä globaaleja muuttujia vain tiedostoon, jossa se on ilmoitettu.
Example: static int count = 10;

Muista, että staattisen muuttujan oletusalkuarvo on nolla ja se alustetaan vain kerran elinkaarensa aikana.

#include <stdio.h> /* 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= 7
iteration=15 and counter= 8
iteration=16 and counter= 9

Yleiset muuttujat ovat käytettävissä koko tiedostossa, kun taas staattiset muuttujat ovat käytettävissä vain koodin tietyssä osassa.

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

Rekisteröidy tallennusluokkaan C

Voit käyttää rekisterin tallennusluokkaa, kun haluat tallentaa paikallisia muuttujia funktioihin tai lohkoihin CPU-rekistereihin sen sijaan, että RAM jotta pääset nopeasti käsiksi näihin muuttujiin. Esimerkiksi "laskurit" ovat hyvä kandidaatti tallennettavaksi rekisteriin.

Example: register int age;

Avainsana ilmoittautua käytetään ilmoittamaan rekisterin tallennusluokka. Rekisterin tallennusluokalla ilmoitettujen muuttujien käyttöikä on koko ohjelman ajan.

Se on samanlainen kuin automaattinen tallennusluokka. Muuttuja on rajoitettu tiettyyn lohkoon. Ainoa ero on, että rekisterin tallennusluokalla ilmoitetut muuttujat tallennetaan CPU-rekistereihin muistin sijaan. Rekisterillä on nopeampi pääsy kuin päämuistiin.

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

#include <stdio.h> /* 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

Seuraavassa taulukossa on yhteenveto kunkin tallennusluokan tärkeimmistä ominaisuuksista, joita käytetään yleisesti C-ohjelmoinnissa

Varastointiluokka Ilmoitus varastointi Oletusalkuarvo Laajuus Elinikäinen
auto Toiminnon/lohkon sisällä Muisti ennalta arvaamaton Toiminnon/lohkon sisällä Toiminnon/lohkon sisällä
ilmoittautua Toiminnon/lohkon sisällä CPU-rekisterit Roskat Toiminnon/lohkon sisällä Toiminnon/lohkon sisällä
ulkoinen Kaikkien toimintojen ulkopuolella Muisti nolla Koko tiedosto ja muut tiedostot, joissa muuttuja on ilmoitettu ulkoiseksi ohjelman suoritusaika
Staattinen (paikallinen) Toiminnon/lohkon sisällä Muisti nolla Toiminnon/lohkon sisällä ohjelman suoritusaika
Staattinen (maailmanlaajuinen) Kaikkien toimintojen ulkopuolella Muisti nolla Global ohjelman suoritusaika

Yhteenveto

Tässä opetusohjelmassa olemme keskustelleet C:n tallennusluokista yhteenvetona:

  • C:n tallennusluokkaa käytetään edustamaan muuttujaa koskevia lisätietoja.
  • Varastointiluokka edustaa muuttujan laajuutta ja käyttöikää.
  • Se kertoo myös, kuka voi käyttää muuttujaa ja mistä?
  • Auto, extern, register, staattinen ovat neljä eri tallennusluokkaa C-ohjelmassa.
  • Tallennusluokan määrittäjä sisään C-kieli käytetään muuttujien, funktioiden ja parametrien määrittämiseen.
  • Auto käytetään lohkossa tai funktiossa määritetylle paikalliselle muuttujalle
  • rekisteriä käytetään muuttujan tallentamiseen CPU-rekistereihin, eikä muistipaikkaan nopeaa pääsyä varten.
  • Static käytetään sekä globaaleja että paikallisia muuttujia. Jokaisella on oma käyttötapauksensa C-ohjelmassa.
  • Externiä käytetään tietojen jakamiseen C-projektitiedostojen välillä.