Razredi shranjevanja v jeziku C: samodejni, zunanji, statični, razred registra v jeziku C

Kazalo:

Anonim

Kaj je razred za shranjevanje v C?

Razred shrambe predstavlja vidnost in lokacijo spremenljivke. Pove, iz katerega dela kode lahko dostopamo do spremenljivke. Razred shrambe v jeziku C opisuje naslednje stvari:

  • Spremenljiv obseg.
  • Mesto, kjer bo spremenljivka shranjena.
  • Inicializirana vrednost spremenljivke.
  • Življenjska doba spremenljivke.
  • Kdo lahko dostopa do spremenljivke?

Tako se razred shranjevanja uporablja za predstavitev informacij o spremenljivki.

OPOMBA: Spremenljivka ni povezana samo z vrsto podatkov, njegovo vrednostjo, temveč tudi s pomnilniškim razredom.

Obstajajo štiri vrste standardnih razredov shranjevanja. Spodnja tabela predstavlja razrede shranjevanja v C.

Razred shranjevanja Namen
samodejno To je privzeti razred pomnilnika.
zunanjost Je globalna spremenljivka.
statična To je lokalna spremenljivka, ki lahko vrne vrednost, tudi če se nadzor prenese v klic funkcije.
register To je spremenljivka, ki je shranjena v registru.

V tej vadnici za C se boste naučili različnih vrst razredov shranjevanja v jeziku C s primeri-

  • Razred samodejnega shranjevanja v jeziku C
  • Razred zunanjega skladišča v jeziku C
    • Prva datoteka: main.c
    • Druga datoteka: original.c
  • Statični razred za shranjevanje v jeziku C
  • Registrirajte razred shrambe v C

Razred samodejnega shranjevanja v jeziku C

Spremenljivke, definirane z razredom samodejnega shranjevanja, se imenujejo lokalne spremenljivke. Auto pomeni razred samodejnega shranjevanja. Spremenljivka je privzeto v razredu samodejnega shranjevanja, če ni izrecno podana.

Obseg samodejne spremenljivke je omejen samo z določenim blokom. Ko nadzor ugasne iz bloka, se dostop uniči. To pomeni, da lahko do njega dostopa samo blok, v katerem je deklarirana samodejna spremenljivka.

Ključna beseda auto se uporablja za določanje razreda samodejnega shranjevanja. Privzeto samodejna spremenljivka vsebuje vrednost smeti.

Example, auto int age;

Spodnji program definira funkcijo z dvema lokalnima spremenljivkama

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

Vzemimo drug program, ki prikazuje raven obsega "raven vidnosti" za samodejne spremenljivke v vsaki blokovni kodi, ki so neodvisno druga od druge:

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

IZHOD:

 3 2 1 

Razred zunanjega skladišča v jeziku C

Extern pomeni razred zunanjega pomnilnika. Razred zunanjega pomnilnika se uporablja, kadar imamo globalne funkcije ali spremenljivke, ki si jih delimo med dvema ali več datotekami.

Ključna beseda extern se uporablja za deklariranje globalne spremenljivke ali funkcije v drugi datoteki, ki zagotavlja sklic na spremenljivko ali funkcijo, ki sta že bili definirani v prvotni datoteki.

Spremenljivke, definirane z uporabo ključne besede extern, se imenujejo globalne spremenljivke. Te spremenljivke so dostopne v celotnem programu. Upoštevajte, da zunanje spremenljivke ni mogoče inicializirati, je že bila definirana v izvirni datoteki.

Example, extern void display();

Prva datoteka: main.c

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

Druga datoteka: original.c

#include i=48;

Rezultat:

 value of the external integer is = 48

Če želite zbrati in zagnati zgornjo kodo, sledite spodnjim korakom

1. korak) Ustvarite nov projekt,

  1. Izberite Konzolna aplikacija
  2. Kliknite Pojdi

Korak 2) Izberite C in kliknite Naprej

Korak 3) Kliknite Naprej

Korak 4) Vnesite podrobnosti in kliknite Naprej

5. korak) Kliknite Dokončaj

Korak 6) V datoteko main.c vstavite glavno kodo, kot je prikazano v prejšnjem programu, in jo shranite

Korak 7) Ustvarite novo datoteko C [Datoteka -> nova -> Izprazni datoteko, shranite (kot original.c) in jo dodajte v trenutni projekt s klikom na »V redu« v pogovornem oknu.

Korak 8) Vstavite in shranite kodo C datoteke original.c, prikazano v prejšnjem primeru, brez funkcije main ().

Korak 9) Zgradite in zaženite svoj projekt. Rezultat je prikazan na naslednji sliki

Statični razred za shranjevanje v jeziku C

Statične spremenljivke se znotraj funkcije / datoteke uporabljajo kot lokalne statične spremenljivke. Uporabljajo se lahko tudi kot globalna spremenljivka

  • Statična lokalna spremenljivka je lokalna spremenljivka, ki ohrani in shrani svojo vrednost med klici funkcije ali bloka in ostane vidna samo funkciji ali bloku, v katerem je definirana.
  • Statične globalne spremenljivke so globalne spremenljivke, ki so vidne samo datoteki, v kateri je navedena.
Example: static int count = 10;

Upoštevajte, da ima statična spremenljivka privzeto začetno vrednost nič in se v svoji življenjski dobi inicializira le enkrat.

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

Rezultat:

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

Globalne spremenljivke so dostopne v celotni datoteki, medtem ko so statične spremenljivke dostopne samo določenemu delu kode.

Življenjska doba statične spremenljivke je v celotni programski kodi. Spremenljivka, ki je deklarirana ali inicializirana s pomočjo ključne besede static, vedno vsebuje privzeto vrednost nič.

Registrirajte razred shrambe v C

Razred za shranjevanje registrov lahko uporabite, kadar želite lokalne spremenljivke shraniti znotraj funkcij ali blokov v registre CPU namesto RAM-a, da imate hiter dostop do teh spremenljivk. Na primer, "števci" so dober kandidat za shranjevanje v registru.

Example: register int age;

Ključna beseda register se uporablja za razglasitev razreda pomnilnika registra. Spremenljivke, deklarirane z uporabo razreda shranjevanja registra, imajo v celotnem programu življenjsko dobo.

Podobno je razredu samodejnega shranjevanja. Spremenljivka je omejena na določen blok. Edina razlika je v tem, da so spremenljivke, deklarirane z uporabo razreda pomnilnika registra, shranjene znotraj registrov CPU namesto v pomnilniku. Register ima hitrejši dostop kot glavni pomnilnik.

Spremenljivke, deklarirane z uporabo razreda pomnilnika registra, nima privzete vrednosti. Te spremenljivke so pogosto navedene na začetku programa.

#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*/}}

IZHOD:

error: address of register variable 'weight' requested

Naslednja tabela povzema glavne značilnosti vsakega razreda pomnilnika, ki se običajno uporabljajo pri programiranju C.

Razred shranjevanja Izjava Skladiščenje Privzeta začetna vrednost Obseg Življenska doba
samodejno Znotraj funkcije / bloka Spomin Nepredvidljivo Znotraj funkcije / bloka Znotraj funkcije / bloka
register Znotraj funkcije / bloka Registri CPU Smeti Znotraj funkcije / bloka Znotraj funkcije / bloka
zunanjost Zunaj vseh funkcij Spomin Nič Celotno datoteko in druge datoteke, kjer je spremenljivka deklarirana kot eksterna izvajanje programa
Statično (lokalno) Znotraj funkcije / bloka Spomin Nič Znotraj funkcije / bloka izvajanje programa
Statično (globalno) Zunaj vseh funkcij Spomin Nič Globalno izvajanje programa

Povzetek

V tej vadnici smo razpravljali o razredih shranjevanja v jeziku C, da povzamemo:

  • Razred pomnilnika v jeziku C se uporablja za predstavitev dodatnih informacij o spremenljivki.
  • Razred shranjevanja predstavlja obseg in življenjsko dobo spremenljivke.
  • Pove tudi, kdo ima dostop do spremenljivke in od kod?
  • Auto, extern, register, static so štirje različni razredi pomnilnika v programu C.
  • Specifikator razreda pomnilnika v jeziku C se uporablja za definiranje spremenljivk, funkcij in parametrov.
  • auto se uporablja za lokalno spremenljivko, definirano znotraj bloka ali funkcije
  • register se uporablja za shranjevanje spremenljivke v registre CPU in ne na pomnilniško mesto za hiter dostop.
  • Statična se uporablja tako za globalne kot lokalne spremenljivke. Vsak ima svoj primer uporabe v programu C.
  • Extern se uporablja za izmenjavo podatkov med projektnimi datotekami C.