Čo je trieda úložiska v jazyku C?
Trieda úložiska predstavuje viditeľnosť a umiestnenie premennej. Hovorí o tom, z ktorej časti kódu môžeme získať prístup k premennej. Trieda úložiska v jazyku C sa používa na opis nasledujúcich vecí:
- Variabilný rozsah.
- Miesto, kde bude premenná uložená.
- Inicializovaná hodnota premennej.
- Životnosť premennej.
- Kto má prístup k premennej?
Teda trieda úložiska sa používa na reprezentáciu informácií o premennej.
POZNÁMKA: Premenná nie je spojená iba s dátovým typom, jeho hodnotou, ale aj s triedou úložiska.
Existujú celkom štyri typy štandardných tried ukladacích priestorov. Nasledujúca tabuľka predstavuje triedy úložiska v C.
Skladovacia trieda | Účel |
auto | Je to predvolená trieda úložiska. |
externý | Je to globálna premenná. |
statický | Je to lokálna premenná, ktorá je schopná vrátiť hodnotu, aj keď sa riadenie prenáša na volanie funkcie. |
Registrovať | Je to premenná, ktorá je uložená v registri. |
V tomto tutoriáli C sa naučíte rôzne typy tried ukladania v jazyku C s príkladmi -
- Trieda automatického ukladania v C.
- Trieda externého skladovania v C.
- Prvý súbor: main.c
- Druhý súbor: original.c
- Statická trieda skladovania v C.
- Registrovať triedu úložiska v C
Trieda automatického ukladania v C.
Premenné definované pomocou triedy automatického ukladania sa nazývajú lokálne premenné. Auto znamená triedu automatického ukladania. Premenná je v predvolenom nastavení v triede automatického ukladania, ak nie je výslovne uvedená.
Rozsah automatickej premennej je obmedzený iba na konkrétny blok. Akonáhle riadenie vypadne z bloku, prístup je zničený. To znamená, že k nej má prístup iba blok, v ktorom je deklarovaná automatická premenná.
Na definovanie triedy automatického ukladania sa používa kľúčové slovo auto. Automaticky obsahuje automaticky premennú hodnotu smetia.
Example, auto int age;
Program dole definuje funkciu s má dve lokálne premenné
int add(void) {int a=13;auto int b=48;return a+b;}
Vezmeme si ďalší program, ktorý zobrazuje úroveň rozsahu „úroveň viditeľnosti“ pre automatické premenné v každom blokovom kóde, ktoré sú navzájom nezávislé:
#includeint main( ){auto int j = 1;{auto int j= 2;{auto int j = 3;printf ( " %d ", j);}printf ( "\t %d ",j);}printf( "%d\n", j);}
VÝKON:
3 2 1
Trieda externého skladovania v C.
Externé znamená triedu externého úložiska. Trieda externého úložiska sa používa, keď máme globálne funkcie alebo premenné, ktoré sú zdieľané medzi dvoma alebo viacerými súbormi.
Kľúčové slovo extern sa používa na deklarovanie globálnej premennej alebo funkcie v inom súbore, aby sa poskytol odkaz na premennú alebo funkciu, ktoré už boli definované v pôvodnom súbore.
Premenné definované pomocou externého kľúčového slova sa nazývajú globálne premenné. Tieto premenné sú prístupné v celom programe. Všimnite si, že externú premennú nie je možné inicializovať, pretože už bola definovaná v pôvodnom súbore.
Example, extern void display();
Prvý súbor: main.c
#includeextern i;main() {printf("value of the external integer is = %d\n", i);return 0;}
Druhý súbor: original.c
#includei=48;
Výsledok:
value of the external integer is = 48
Ak chcete zostaviť a spustiť vyššie uvedený kód, postupujte podľa nasledujúcich krokov
Krok 1) Vytvorte nový projekt,
- Vyberte možnosť Konzolová aplikácia
- Kliknite na tlačidlo Prejsť
Krok 2) Vyberte C a kliknite na Ďalej
Krok 3) Kliknite na Ďalej
Krok 4) Zadajte podrobnosti a kliknite na Ďalej
Krok 5) Kliknite na Dokončiť
Krok 6) Vložte hlavný kód, ako je znázornené v predchádzajúcom programe, do súboru main.c a uložte ho
Krok 7) Vytvorte nový súbor C [Súbor -> nový -> Prázdny súbor, uložte (ako originál.c) a pridajte ho do aktuálneho projektu kliknutím na tlačidlo „OK“ v dialógovom okne.
Krok 8) Vložte a uložte C kód súboru original.c zobrazeného v predchádzajúcom príklade bez funkcie main ().
Krok 9) Vytvorte a spustite svoj projekt. Výsledok je uvedený na nasledujúcom obrázku
Statická trieda skladovania v C.
Statické premenné sa používajú v rámci funkcie / súboru ako lokálne statické premenné. Môžu sa tiež použiť ako globálna premenná
- Statická lokálna premenná je lokálna premenná, ktorá si zachováva a ukladá svoju hodnotu medzi volaniami funkcií alebo blokmi a zostáva viditeľná iba pre funkciu alebo blok, v ktorom je definovaná.
- Statické globálne premenné sú globálne premenné viditeľné iba pre súbor, v ktorom sú deklarované.
Example: static int count = 10;
Pamätajte, že statická premenná má predvolenú počiatočnú hodnotu nula a inicializuje sa iba raz za svoju životnosť.
#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);}
Výsledok:
iteration=14 and counter= 7iteration=15 and counter= 8iteration=16 and counter= 9
Globálne premenné sú prístupné v celom súbore, zatiaľ čo statické premenné sú prístupné iba pre konkrétnu časť kódu.
Životnosť statickej premennej je v celom programovom kóde. Premenná, ktorá je deklarovaná alebo inicializovaná pomocou statického kľúčového slova, obsahuje ako predvolenú hodnotu vždy nulu.
Registrovať triedu úložiska v C
Triedu úložiska registrov môžete použiť, ak chcete ukladať miestne premenné do funkcií alebo blokov do registrov CPU namiesto RAM, aby ste k týmto premenným mali rýchly prístup. Napríklad „počítadlá“ sú vhodným kandidátom na zápis do registra.
Example: register int age;
Kľúčové slovo register sa používa na deklaráciu triedy úložiska registrov. Premenné deklarované pomocou triedy úložiska registra majú životnosť v celom programe.
Je to podobné ako s triedou automatického ukladania. Premenná je obmedzená na konkrétny blok. Jediný rozdiel je v tom, že premenné deklarované pomocou triedy úložiska registrov sú uložené v registroch CPU namiesto v pamäti. Register má rýchlejší prístup ako prístup k hlavnej pamäti.
Premenné deklarované pomocou triedy úložiska registra nemajú predvolenú hodnotu. Tieto premenné sa často deklarujú na začiatku programu.
#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*/}}
VÝKON:
error: address of register variable 'weight' requested
V nasledujúcej tabuľke sú zhrnuté základné funkcie jednotlivých tried úložných zariadení, ktoré sa bežne používajú v programovaní v jazyku C.
Skladovacia trieda | Vyhlásenie | Skladovanie | Predvolená počiatočná hodnota | Rozsah | Život |
auto | Vo vnútri funkcie / bloku | Pamäť | Nepredvídateľné | V rámci funkcie / bloku | V rámci funkcie / bloku |
Registrovať | Vo vnútri funkcie / bloku | Registre CPU | Odpadky | V rámci funkcie / bloku | V rámci funkcie / bloku |
externý | Mimo všetkých funkcií | Pamäť | Nula | Vložte celý súbor a ďalšie súbory, v ktorých je premenná deklarovaná ako externá | runtime programu |
Statický (miestny) | Vo vnútri funkcie / bloku | Pamäť | Nula | V rámci funkcie / bloku | runtime programu |
Statický (globálny) | Mimo všetkých funkcií | Pamäť | Nula | Globálne | runtime programu |
Zhrnutie
V tomto tutoriáli sme diskutovali triedy ukladania v C, aby sme zhrnuli:
- Trieda pamäte v C sa používa na vyjadrenie ďalších informácií o premennej.
- Trieda úložiska predstavuje rozsah a životnosť premennej.
- Tiež informuje, kto a odkiaľ má prístup k premennej.
- Auto, extern, register, static sú štyri rôzne triedy ukladania v programe C.
- Na definovanie premenných, funkcií a parametrov sa používa špecifikátor triedy úložiska v jazyku C.
- auto sa používa pre lokálnu premennú definovanú v rámci bloku alebo funkcie
- register slúži na ukladanie premenných do registrov CPU, skôr do pamäťového miesta pre rýchly prístup.
- Statická hodnota sa používa pre globálne aj lokálne premenné. Každý z nich má svoj prípad použitia v rámci programu C.
- Extern sa používa na zdieľanie údajov medzi súbormi projektu C.