Uvod u klase skladištenja C

Svaku vrijednost ili broj treba pohraniti na neko mjesto za kasnije korištenje, zar ne? To se može učiniti pomoću varijabli u C. Varijable su područja za pohranu koja se koriste u našim programima. Svaka će varijabla biti specifičnog tipa kao što je cijeli broj, znak i također će imati određenu veličinu i izgled, ovisno o njihovoj vrsti. Svaka vrsta varijable trebala bi biti spremljena u određenom dijelu memorije i imat će ograničene ili posebne dozvole pristupa. Klase skladištenja u C određuje u kojem dijelu memorije treba pohraniti svaku varijablu, a također određuje opseg (vidljivost) varijable. Postoje četiri vrste klasa pohrane - automatska, vanjska, statička i registar. Jedan spremnik specifikacije može se spomenuti zajedno s varijablom.

Vrste skladišnih klasa u C

Vrste skladišnih razreda u C su kako slijedi

1. Klasa automatskog skladištenja

Sve varijable deklarirane unutar funkcije ili bloka pohranit će se u automatski specifikator prema zadanim postavkama čak i ako nisu izričito definirane. Specifikator ove klase pohrane je "auto". Opseg ili vidljivost varijabli u klasi automatskog pohranjivanja lokalni su blok ili funkcija koju su definirali. Promjenjiva će biti uništena nakon što izađemo iz funkcije ili bloka.

To se može bolje objasniti primjerom. Razmotrite primjer naveden u nastavku:

Kodirati:

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

Izlaz:

4

2

Ovdje se prvo deklarira varijabla I cijelog broja s dodijeljenom vrijednošću 2. Zatim se unutar petlje ili bloka opet varijabla I istog cjelobrojnog tipa deklarira sa dodijeljenom vrijednošću 4. Ako se ne spominje specifikator pohrane, on se prema zadanim postavkama uzima kao automatski. U prvom iskazu printf koji se spominje unutar bloka ispisat će se 4 na ispis vrijednosti I., dok će u drugom ispisu iskaza koji se spominje izvan bloka ispisati vrijednost I kao 2, vrijednost koja je spomenuta izvan Gradska četvrt, kvart. Bolje je pokrenuti neku vrijednost sa automatskim varijablama jer ponekad postoje šanse da se dobije bilo kakva vrijednost smeća ako se ne izvrši inicijalizacija. Ovaj primjer daje jasnu sliku auto varijabli i lokalnog opsega.

2. Registrirajte klasu skladištenja

Promjenjive varijable pohranjene u klasi za pohranu u registru imat će i lokalni opseg, što znači da je dostupan ili vidljiv samo u bloku u kojem je deklariran. Ta je pohrana slična automatskoj, ali glavna je razlika u tome što su automatske varijable spremljene u memoriji dok su varijable registara spremljene u CPU registrima. To se događa ako želimo vrlo često pristupiti varijabli. Oni se mogu brže koristiti. Samo nekoliko varijabli pohranjuju se pomoću specifičara registra. Ako u registru nema mjesta, on se pohranjuje samo u memoriju. Početnim vrijednostima nije dodijeljena početna vrijednost. Također, & (address-of) operator se ne može upotrijebiti za registar varijabli. Na primjer, varijable koje se koriste za brojače ili slične vrste upotrebe pohranjuju se pomoću registratora.

3. Klasa statičkog skladištenja

Varijabla, može li biti globalna ili lokalna, pohranjuje se pomoću statičkog specifikatora u klasi statičkog skladištenja kada varijablu treba jednom proglasiti i vrijednost treba zadržati. Kada se varijabla deklarira kao statična, vrijednost će biti spremljena ili zadržana između poziva funkcije. Stvara se trajna pohrana i deklarira se samo jednom. Kada je lokalna varijabla deklarirana kao statična, stvara se trajna pohrana za nju i vrijednost se zadržava svaki put kada se koristi. Također prema opsegu uobičajene lokalne varijable, statičke lokalne varijable također su vidljive samo funkciji ili bloku gdje je definirana. Kada se globalna varijabla deklarira kao statična, slično je statičkoj lokalnoj, stvara se trajna pohrana i deklarira se samo jednom. No iako su globalne, ove su varijable vidljive samo u datoteci u kojoj je definirana.

Statičke varijable mogu se jasno prikazati na sljedećem primjeru:

Kodirati:

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

Izlaz:

2

4

Ovdje, u gornjem programu, kada se poziva samplefunc (), varijabla a se definira i inicijalizira prvi put i za nju se stvara trajna pohrana. Matematičkim izrazom koji se koristi u funkciji vrijednost a tada postaje 2. Ali kada se isti uzorakfunc () zove drugi put, varijabla a se ne definira ili ponovno inicijalizira, već uzima zadnju zadanu vrijednost i nastavlja s operacijom što daje konačni rezultat kao 4. Ovo je glavna upotreba i prednost statičkih varijabli.

4. Klasa skladištenja u vanjskim prostorima

Promjenjiva deklarirana kao eksterna pokazuje da je varijabla definirana na drugom mjestu u drugom programu. Ove vanjske varijable koriste se kada želimo da se i jedna varijabla ili funkcija definirana u jednom programu koristi i u drugoj datoteci. Varijable s eksternim specifikatorom pohranjuju se u eksterni razred pohrane. Kad je varijabla deklarirana kao extern program, ona određuje vanjsku vezu i stoga je ponovo ne definira ili inicijalizira. Pohrana je dodijeljena samo jedna i također se inicijalizira samo jednom. Ako se vanjske varijable ponovo inicijaliziraju s drugom vrijednošću u vanjskom programu, dobit ćemo pogrešku koja glasi "Redefinicija varijable".

Vanjske varijable objašnjavaju se primjerom u nastavku:

Kodirati:

Prg1.c

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

Prg2.c

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

Izlaz:

10

Ovdje je broj cijelih varijabli deklariran u prvom programu C (Prg1.c), a unutar glavne funkcije se inicijalizira u vrijednost 10. U drugom programu C ista varijabla brojanja deklarirana je pomoću eksternog specifikatora, koji određuje da postoji vanjska veza i vrijednost se preuzima iz prostora za pohranu, a vrijednost 10 daje se broju vrijednosti kad je tiskamo u drugom programu. To je uporaba vanjskih varijabli. Prema tome, ovisno o različitoj namjeni, svaka klasa pohrane koristi se za odgovarajuće varijable i deklarira se s odgovarajućim specifikatorima.

Preporučeni članci

Ovo je vodič za C klase skladištenja. Ovdje smo raspravljali o vrstama klasa skladištenja, što uključuje klasu automatskog skladištenja, klasu skladištenja u registru, klasu statičkog skladištenja i vanjsku klasu skladištenja. Možete pogledati i sljedeće članke da biste saznali više -

  1. Što je JavaBeans?
  2. ES6 u odnosu na ES5
  3. C ++ u odnosu na Visual C ++
  4. Izvođenje C u odnosu na C ++

Kategorija: