Uvod v razrede za skladiščenje C

Vsako vrednost ali številko je treba nekje shraniti za kasnejšo uporabo, kajne? To lahko storimo s pomočjo spremenljivk v C. Spremenljivke so območja shranjevanja, ki se uporabljajo v naših programih. Vsaka spremenljivka bo določene vrste, kot je celo število, znak in bo imela tudi velikost in postavitev, odvisno od njihove vrste. Vsaka vrsta spremenljivke mora biti shranjena v določenem delu pomnilnika in ima omejena ali posebna dovoljenja za dostop. Shranjevalni razredi v C določajo, v katerem delu pomnilnika naj se shrani vsaka spremenljivka, in tudi odloči o obsegu (vidnosti) spremenljivke. Obstajajo štiri vrste razredov shranjevanja - samodejni, zunanji, statični in register. Skupaj s spremenljivko je mogoče omeniti en specifik pomnilnika.

Vrste razredov skladiščenja na C

Vrste skladiščnih razredov v razredu C so naslednje

1. Razred samodejnega skladiščenja

Vse spremenljivke, prijavljene v funkciji ali bloku, bodo privzeto shranjene v samodejnem specifikatorju, tudi če niso izrecno definirane. Specifik tega razreda za shranjevanje je 'auto'. Obseg ali vidnost spremenljivk v razredu samodejnih pomnilnikov je lokalni za blok ali funkcijo, ki je definirana. Spremenljivka bo uničena, ko pridemo iz funkcije ali bloka.

To je mogoče bolje razložiti s primerom. Razmislite o spodnjem primeru:

Koda:

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

Izhod:

4

2

Tu je spremenljivka I tipa cela številka najprej deklarirana z dodano vrednostjo 2. Nato je znotraj zanke ali bloka spet spremenljivka I istega celega tipa, označena z vrednostjo 4, ki ji je bila dodeljena. Če specifik pomnilnika ni omenjen, se bo privzeto sprejel kot samodejni. V prvem stavku printf, ki je omenjen znotraj bloka, bo natisnjeno 4 pri tiskanju vrednosti I. Ker bo v drugem stavku printf, ki je omenjen zunaj bloka, natisnjena vrednost I kot 2, vrednost, ki je navedena zunaj blok. Bolje je, da nekaj vrednosti vnesete v samodejne spremenljivke, saj obstaja možnost, da včasih dobite katero koli vrednost smeti, če se ne inicializira. Ta primer daje jasno sliko samodejnih spremenljivk in lokalnega obsega.

2. Registrirajte razred skladiščenja

Spremenljivke, shranjene v razredu shranjevanja v registru, bodo imele tudi lokalno območje, kar pomeni, da je dostopno ali vidno le v bloku, v katerem je prijavljeno. Ta pomnilnik je podoben samodejnemu, vendar je glavna razlika v tem, da so samodejne spremenljivke shranjene v pomnilniku, medtem ko so spremenljivke registra shranjene v registrih procesorja. To storimo, če želimo do spremenljivke dostopati zelo pogosto. Te lahko uporabimo hitreje. Le nekaj spremenljivk je shranjenih s pomočjo specifikatorjev registra. Če v registru ni prostora, se le-ta shrani samo v pomnilnik. Zahodnim spremenljivkam ni dodeljena začetna vrednost. Prav tako operaterja & (naslova) ne morete uporabiti v spremenljivkah registra. Na primer, spremenljivke, ki se uporabljajo za števce ali podobne vrste uporabe, se shranijo s pomočjo specifikatorja registra.

3. Statični razred skladiščenja

Spremenljivke, pa naj bodo globalne ali lokalne, so shranjene s pomočjo statičnega specifikatorja v razredu statičnega shranjevanja, ko je treba spremenljivko enkrat objaviti in vrednost ohraniti. Ko je spremenljivka razglašena kot statična, se vrednost shrani ali zadrži med klici funkcij. Ustvari se trajna shramba in se razglasi samo enkrat. Ko je lokalna spremenljivka razglašena za statično, se zanjo ustvari trajni pomnilnik in vrednost se ob vsaki uporabi ohrani. Tudi glede na obseg običajne lokalne spremenljivke so statične lokalne spremenljivke vidne le funkciji ali bloku, kjer je definirana. Ko je globalna spremenljivka deklarirana kot statična, je podobna statični lokalni, se ustvari trajni pomnilnik in se razglasi samo enkrat. Čeprav so globalne, so te spremenljivke vidne le v datoteki, v kateri je določena.

Statične spremenljivke je mogoče jasno prikazati s spodnjim primerom:

Koda:

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);
)

Izhod:

2

4

Tu je v zgornjem programu, ko se pokliče samplefunc (), spremenljivka a definirana in inicializirana prvič in zanjo ustvarjena stalna shramba. Z matematičnim izrazom, ki se uporablja v funkciji, vrednost a potem postane 2. Toda, ko se isti vzorčni funkc () pokliče drugič, spremenljivka a ni definirana ali ponovno inicializirana, temveč vzame zadnjo zadržano vrednost in nadaljuje z operacijo končni rezultat je 4. To je glavna uporaba in prednost statičnih spremenljivk.

4. Zunanji skladiščni razred

Spremenljivka, označena kot zunanja, prikazuje, da je spremenljivka definirana drugje v drugem programu. Te zunanje spremenljivke se uporabljajo, kadar želimo, da se katera koli spremenljivka ali funkcija, določena v enem programu, uporablja tudi v drugi datoteki. Spremenljivke s specifikacijo extern so shranjene v razredu extern storage. Ko je spremenljivka deklarirana kot extern program, podaja zunanjo povezavo in zato ni več definirana ali inicializirana. Shranjevanje je dodeljeno samo eno in tudi inicializirano samo enkrat. Če se zunanje spremenljivke ponovno inicializirajo z drugo vrednostjo v zunanjem programu, bomo dobili napako, ki navaja „Prenovi spremenljivko“.

Zunanje spremenljivke so razložene s spodnjim primerom:

Koda:

Prg1.c

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

Prg2.c

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

Izhod:

10

Tu je celo število spremenljivk deklarirano v prvem programu C (Prg1.c) in znotraj glavne funkcije se inicializira na vrednost 10. V drugem programu C se ista spremenljivka števila razglasi s pomočjo eksternega specifikatorja, ki določa, da obstaja zunanja povezava in vrednost se prenaša iz pomnilnika, vrednost 10 pa je dana številu vrednosti, ko jo natisnemo v drugem programu. To je uporaba zunanjih spremenljivk. Tako se odvisno od različnega namena vsi razredi shranjevanja uporabljajo za ustrezne spremenljivke in se deklarirajo z ustreznimi specifikatorji.

Priporočeni članki

To je vodnik za razrede za shranjevanje C. Tukaj razpravljamo o vrstah skladiščnih razredov, ki vključuje razred samodejnega skladiščenja, razred shranjevanja v registru, razred statičnega skladiščenja in razred zunanjega skladiščenja. Če želite izvedeti več, si oglejte tudi naslednje članke -

  1. Kaj je JavaBeans?
  2. ES6 proti ES5
  3. C ++ v primerjavi z Visual C ++
  4. Uspešnost C v C ++