Čo je to trieda úložiska v C ++ a jej typy?



V tomto blogu o triedach úložiska sa na príkladoch pozrieme na rôzne triedy úložiska používané v C ++, ako sú automatické, registračné, statické, externé a premenlivé.

Skladovacia trieda v C ++ definuje životnosť a viditeľnosť premennej / funkcií. Životnosť je doba, do ktorej zostáva premenná aktívna, a viditeľnosť je dostupnosť premennej z rôznych modulov programu. Toto pomáha vystopovať existenciu konkrétnej premennej počas behu programu. V tomto blogu o triedach úložiska sa pozrieme na rôzne triedy úložiska používané v C ++.

Poďme začať.





Čo je trieda úložiska v C ++?

Každá premenná v C ++ má dátový typ a triedu úložiska. Údajový typ určuje typ údajov, ktoré je možné uložiť do premennej, ako je int, float, char atď. Trieda úložiska riadi dve rôzne vlastnosti premennej: životnosť a rozsah.

Boli by ste videli, že každá premenná má dátový typ, ale doteraz by ste možno nevideli žiadnu triedu úložného priestoru pripojenú k premennej. Ak v skutočnosti nedefinujete triedu úložiska, kompilátor jej automaticky priradí predvolenú triedu úložiska. Trieda úložiska premennej poskytuje informácie o umiestnení premennej v pamäti, predvolenej počiatočnej hodnote, rozsahu premennej a jej životnosti.



Druhy triedy skladovania

V C ++ programe je päť tried úložiska:

  • auto
  • Registrovať
  • statický
  • externý
  • premenlivé

Pozrime sa podrobne na každú z tried ukladacích priestorov.

Trieda automatického ukladania

Trieda automatického (automatického) úložného priestoru je predvolenou triedou úložného priestoru pre všetky miestne premenné, ktoré sú deklarované vo vnútri funkcie alebo bloku. Kľúčové slovo auto sa pri písaní a. Používa zriedka Program v C ++ .



Rozsah automatických premenných je vo funkcii alebo bloku, kde boli deklarované, a mimo tejto funkcie alebo bloku k nim nie je možné získať prístup. Je k nim tiež prístup v rámci vnorených blokov v rámci nadradeného bloku / funkcie, v ktorej bola deklarovaná automatická premenná.

K automatickým premenným mimo ich rozsahu môžete pristupovať pomocou premennej ukazovateľa. Musíte ukazovať na to isté miesto v pamäti, kde sa nachádzajú premenné.

Jeho životnosť je rovnaká ako životnosť funkcie. Po dokončení vykonávania funkcie je premenná zničená.

Implicitne im je pri deklarácii priradená smetná hodnota.

Syntax:

datatype var_name1 [= hodnota]

alebo

auto datatype var_name1 [= hodnota]

Vo vyššie uvedenom príklade sú dve premenné definované s rovnakou triedou úložiska. Auto možno použiť iba na definovanie lokálnych premenných, t. J. V rámci funkcií.

Registrovať triedu úložiska

Ako už názov napovedá, trieda úložiska registrov sa používa na deklaráciu premenných registrov. Celá funkcionalita premennej registra je rovnaká ako automatická premenná s tým rozdielom, že kompilátor sa pokúsi tieto premenné uložiť do registra mikroprocesora, ak je k dispozícii voľný register. Ak nie je k dispozícii bezplatný register, tieto sa potom uložia iba do pamäte.

Operácie s premennými registra sú teda oveľa rýchlejšie ako operácie s inými premennými, ktoré sú uložené v pamäti počas behu programu.

Spravidla sa v rámci triedy úložných priestorov registra deklaruje niekoľko premenných, ku ktorým je potrebné v programe často pristupovať, aby sa zlepšila doba chodu programu. Adresu premennej registra nemožno získať pomocou ukazovateľov.

Maximálna veľkosť premennej sa rovná veľkosti registra (t. J. Približne jedno slovo). Nemôže na ňu byť použitý unárny operátor „&“, pretože nemá pamäťové miesto.

Syntax:

zaregistrovať dátový typ var_name1 [= hodnota]

Príklad:

čo robí ios vývojár
{register int pi}

Definovanie „registra“ neznamená, že premenná bude uložená v registri. Môže byť uložený v registri v závislosti od hardvérových a implementačných obmedzení.

Pozrime sa na príklad tried registrácie a automatického ukladania.

Príklad:

#include using namespace std // deklarácia premennej, ktorá sa má vytvoriť externe // úvodnú hodnotu je možné inicializovať aj na x int x void autoStorageClass () {printf ('nDemonstrating auto classnn') // deklarovanie auto premennej (jednoducho // aj zápis 'int a = 32') int num = 32 // tlač auto premennej 'a' printf ('hodnota premennej' num '' 'deklarovanej ako auto:% dn', num) printf ( '--------------------------------')} void registerStorageClass () {printf ('nDemonstrating register classnn') / / deklarácia premennej registra register char c = 'G' // tlač premennej registra 'b' printf ('hodnota premennej' c '' 'deklarovaná ako register:% dn', c) printf ('---- ---------------------------- ')} int main () {// Predvedenie automatickej triedy úložiska autoStorageClass () // Predvedenie register Storage Class registerStorageClass () návrat 0}

Výkon:

Výstup - trieda úložiska v C ++ - EdurekaTrieda statického úložiska

Na deklaráciu sa používa trieda statického úložiska statické premenné . Statické premenné si zachovajú svoju hodnotu (t. J. Poslednú hodnotu), aj keď sú mimo svojho rozsahu. Statické premenné sa inicializujú iba raz &až do ukončenia programu.

Pamäť je pridelená statickej premennej iba raz a nie je pridelená žiadna nová pamäť, pretože sa znova nedeklarujú. Globálne statické premenné sú prístupné kdekoľvek v programe. Implicitne im prekladač priradí hodnotu 0.

Ak sa v C ++ použije statický údajový člen triedy, spôsobí to, že všetky objekty jeho triedy budú zdieľané iba s jednou kópiou tohto člena.

Syntax:

statický dátový typ var_name1 [= hodnota]

Príklad:

#include void function (void) static int c = 5 // Globálna statická premenná main () {while (c--) {function ()} return 0} void function (void) {static int cnt = 2 cnt ++ std :: cout<< 'cnt is ' << cnt std::cout << ' and c is ' << c << std::endl } 

Výkon:

Trieda externého skladovania

Trieda externého úložiska sa vyžaduje, keď je potrebné zdieľať premenné vo viacerých súboroch. Externé premenné majú globálny rozsah a tieto premenné sú viditeľné mimo súboru, v ktorom sú deklarované. Externá premenná je viditeľná pre všetky programy. Používa sa, ak dva alebo viac súborov zdieľa rovnakú premennú alebo funkciu.

Životnosť externých premenných je taká dlhá, ako je ukončený program, v ktorom je deklarovaná. Normálnu globálnu premennú je možné vytvoriť aj externe, a to umiestnením kľúčového slova „extern“ pred jeho deklaráciu / definíciu do ľubovoľnej funkcie / bloku.

návod pre vývojárov pl sql pre začiatočníkov

Ak použijete výraz „extern“, premennú nie je možné inicializovať, pretože stačí iba nasmerovať názov premennej na miesto úložiska, ktoré bolo predtým definované.

Syntax

externý dátový typ var_name1

Príklad

#include int cnt extern void write_extern () main () {cnt = 5 write_extern ()}

Druhý súbor: support.cpp

#include extern int cnt void write_extern (void) {std :: cout<< 'Count is ' << cnt << std::endl } 

Tu sa externé kľúčové slovo používa na vyhlásenie cnt v inom súbore. Teraz tieto dva súbory kompilujte nasledovne & mínus

$ g ++ main.cpp support.cpp -o zápis

Toto vyprodukuje spustiteľný program na zápis, pokúsi sa vykonať zápis a skontroluje výsledok nasledovne & mínus

$. / zápis

5

Ak pôjdeme ďalej v triede úložiska v C ++, pozrime sa na poslednú, teda na triedu premenlivého úložiska.

Trieda premenlivého úložného priestoru

Premenlivý špecifikátor sa vzťahuje iba na objekty triedy, čo umožňuje členovi objektu prepísať funkciu člena const. To znamená, že premenlivý člen je možné upraviť členskou funkciou const.

Na záver sa pozrime na porovnávaciu tabuľku, aby sme pochopili rozdiely medzi rôznymi triedami úložiska.

Skladovacia trieda

Kľúčové slovo

Život

Viditeľnosť

Pôvodná hodnota

Automaticky

auto

Funkčný blok

Miestne

Odpadky

Vonkajšie

externý

Celý program

Globálne

Nula

Statický

statický

Celý program

Miestne

Nula

Registrovať

Registrovať

Funkčný blok

Miestne

Odpadky

Premenlivé

premenlivý

Trieda

Miestne

Odpadky

java previesť binárne na desatinné

Teraz, keď ste prešli vyššie uvedenými programami C ++, pochopili by ste, aké sú rôzne triedy ukladacích priestorov v C ++ a ako ich implementovať. Dúfam, že tento blog bude informatívny a bude pre vás pridanou hodnotou.

Tak sme sa dostali na koniec tohto článku o „Triedach úložiska v C ++“.

Ak sa chcete dozvedieť viac, pozrite si Edureka, dôveryhodná online vzdelávacia spoločnosť. Výcvikový a certifikačný kurz Edureka Java J2EE a SOA je navrhnutý tak, aby vás vyškolil na základné aj pokročilé koncepty Java spolu s rôznymi rámcami Java, ako je Hibernate & Spring.

Máte na nás otázku? Uveďte to prosím v sekcii komentárov tohto blogu a my sa vám ozveme čo najskôr.