type qualifiers storage classes c
Důležitost kvalifikátorů typu a tříd úložiště v C ++.
V tomhle Exkluzivní C ++ Training Series , téma proměnných dále rozšíříme a v tomto kurzu se podíváme na kvalifikátory typů a třídy úložiště v C ++. Ačkoli se jedná o malé téma, je velmi důležité a významné, pokud jde o programování v C ++.
Kvalifikátory typů v C ++ nemění význam proměnných nebo entit, se kterými se používají, spíše pouze přidávají k entitě další informace.
Co se naučíte:
Zadejte kvalifikátory v C ++
Kvalifikátory typu v C ++ přidávají do proměnné další vlastnosti, jako je proměnná, která je konstantní nebo volatilní.
Kvalifikátory typu vyjadřují způsob, jakým je proměnná přístupná nebo kde je proměnná uložena v paměti tak, že zachovává stejný význam nebo interpretaci proměnné. Svým způsobem kvalifikátory typu přidávají do proměnných další upřesnění.
V C ++ je typový kvalifikátor zadán těsně před specifikátorem typu (datový typ) proměnné.
Kvalifikátory typů v C ++ jsou klasifikovány takto:
# 1) konst
Specifikátor typu „const“ má definovat objekty typu const. Konstantní objekt nebo proměnnou nelze po deklaraci upravit. Pokud dojde k pokusu o změnu objektu const nebo proměnné, pak kompilátor vyvolá chybu. O konstantách / literále jsme již viděli v našem předchozím tutoriálu.
Definice konstant pomocí klíčového slova „const“ odpovídá kvalifikátoru typu „const“.
# 2) volatilní
Kvalifikátor typu „volatile“ znamená, že hodnotu proměnné označené volatile lze změnit jinými způsoby, které program neurčí. Proměnné, které jsou volatilní, se obvykle mění kvůli některým vnějším faktorům a ne nutně kvůli programu. Jinými slovy, jsou těkavé povahy.
Například, proměnná, která čte teplotu ve skutečném slově, může být těkavá, protože čtecí teplota nemusí být programem plně řízena.
# 3) měnitelné
Kvalifikátor typu „mutable“ umožňuje modifikovat členy nebo proměnnou.
Změnitelný kvalifikátor se obvykle použije na členy nestatické třídy nekonstantní a nereferenční typu. Podle konkrétních situací můžeme potřebovat, aby některé proměnné zůstaly nezměnitelné (nelze je změnit) a některé proměnné, aby byly proměnlivé. Tento typ kvalifikace je velmi užitečný, když chceme měnitelné charakteristiky.
Třídy úložiště v C ++
Zatím jsme podrobně probrali všechny proměnné C ++. Viděli jsme, že proměnné jsou deklarovány s příslušnými datovými typy a poté použity v programu. Abychom mohli plně definovat proměnnou, požadujeme kromě jejich datových typů také třídy úložiště.
Přestože jsme dosud pro proměnné neurčili žádné třídy úložiště, existovala výchozí třída úložiště „auto“, která byla použita na všechny proměnné.
Jaké jsou tedy třídy úložiště?
Třídy úložiště určují, jak má proměnná nebo funkce zacházet s kompilátorem a jak má být úložiště přiděleno proměnné. Definuje viditelnost nebo rozsah a životnost proměnné. Životnost proměnné je doba, po kterou proměnná zůstane aktivní.
Viditelnost nebo rozsah proměnné závisí na tom, ke kterým funkcím nebo modulům bude proměnná přístupná. Tyto třídy úložiště jsou zadány před datovým typem proměnné.
V C ++ máme následující třídy úložiště:
# 1) Třída automatického ukládání
Toto je výchozí třída úložiště. Třída úložiště „Auto“ se použije na místní proměnné a překladač ji automaticky přiřadí místním proměnným. Místní proměnné, kterým předchází klíčové slovo „auto“, zůstávají aktivní ve funkci, ve které jsou deklarovány, a po ukončení funkce přejdou z rozsahu.
Pokud proměnné, které mají „automatickou“ třídu úložiště, nejsou inicializovány nebo jim není přiřazena žádná hodnota, pak mají nesmyslné nebo nedefinované hodnoty.
Podívejme se na příklad automatických proměnných v programu C ++.
#include using namespace std; int main() { int i; float f; cout<<'Variable i = '< # 2) Zaregistrujte třídu úložiště Když máme požadavek, aby proměnná potřebovala rychlejší přístup, použijeme třídu úložiště registrů. Takže namísto ukládání proměnných do paměti s náhodným přístupem (RAM) jsou tyto proměnné uloženy v registru CPU a mají stejnou velikost jako registr.
Protože tyto proměnné nemají místo v paměti, nemůžeme s těmito proměnnými použít operátor „&“.
Proměnná s třídou úložiště registru nezaručuje, že proměnná bude vždy uložena v registru. Místo toho pouze předpokládá, že proměnná může být uložena v registru a je zcela závislá na hardwaru a implementaci.
Registrované proměnné mají rozsah a životnost podobné automatickým proměnným.
Například,
#include using namespace std; int main() { int i; register float f; cout<<'Variable i = '< # 3) Třída externího úložiště Třída externího úložiště je vyžadována, když je třeba proměnné sdílet mezi více soubory. Externí proměnné mají globální rozsah a tyto proměnné jsou viditelné mimo soubor, ve kterém jsou deklarovány.
Protože externí proměnné jsou proměnné deklarované a definované venku v jiném souboru, nejsou inicializovány.
Externí proměnné mají globální rozsah a životnost externích proměnných je tak dlouho, dokud je program, ve kterém je deklarován, ukončen.
Externí proměnné lze deklarovat takto:
extern int temp; int temp;
Ve výše uvedeném příkladu máme dvě deklarace proměnných se stejným názvem, ale první je externí proměnná definovaná jinde. Tato externí proměnná bude užitečná, když zahrneme zdrojový soubor, ve kterém je v našem programu definována teplota externí proměnné.
šířka prvního vyhledávání v C ++
# 4) Třída statického úložiště
Třída statického úložiště říká kompilátoru, aby udržoval hodnotu proměnné po celou dobu životnosti programu. Statické proměnné jsou podobné místním proměnným, ale předchází jim klíčové slovo „static“.
Na rozdíl od lokálních proměnných, které po ukončení funkce přejdou z rozsahu, statické proměnné nezůstanou mimo rozsah, když dojde k ukončení funkce nebo bloku a jejich hodnoty jsou zachovány mezi voláními funkcí.
Statické proměnné jsou inicializovány a úložiště je jim přiděleno pouze jednou za dobu životnosti programu. Statické proměnné jsou inicializovány na 0, pokud ne, jsou již inicializovány během deklarace.
Podívejme se na následující příklad, abychom lépe porozuměli třídě statického úložiště.
#include using namespace std; void printvar() { static int var; var++; cout<<'static variable var = '< Výstup:
printvar volání 1: statická proměnná var = 1
printvar volání 2: statická proměnná var = 2
printvar call 3: statická proměnná var = 3
printvar call 4: statická proměnná var = 4
Ve výše uvedeném kódu máme funkci ‚printvar ', ve které jsme deklarovali statickou proměnnou var typu int. Tuto proměnnou poté zvýšíme a vytiskneme. V hlavní funkci voláme funkci printvar čtyřikrát.
Nyní zkontrolujte výstup. Výstup ukazuje, že s každým voláním funkce se statická proměnná var zvýší o 1 od její předchozí hodnoty. Toto je třída statického úložiště, která pomáhá proměnné udržovat její hodnotu mezi voláními funkcí. Statická proměnná není znovu inicializována pro každé volání funkce.
Měli bychom si také všimnout, že ve funkci printvar jsme právě deklarovali statickou proměnnou a neinicializovali ji. Je pozoruhodné, že když neinicializujeme statické proměnné, jsou přiřazeny s počáteční hodnotou 0.
Poznámka: Třídu statického úložiště lze také použít na globální proměnné. V tomto případě bude mít proměnná globální rozsah a navíc statické úložiště.
# 5) Proměnlivá třída úložiště
Třída měnitelného úložiště se použije pouze na objekty třídy. Použitím proměnlivé třídy úložiště může člen objektu přepsat členskou funkci „const“. To znamená, že proměnlivý člen nebo objekt lze upravit pomocí členské funkce, která je „const“.
Další informace o funkcích a objektech const a proměnlivých členech se dozvíme v našich pozdějších cvičeních, když se seznámíme s objektově orientovaným programováním v C ++.
Závěr
Toto je vše o specifikátorech typů a třídách úložiště v C ++. Doufáme, že jsme byli schopni objasnit všechny koncepty ohledně tříd úložiště a specifikátorů typů prostřednictvím tohoto kurzu.
V našem nadcházejícím kurzu se dozvíme více o různých operátorech používaných v C ++ spolu s jejich použitím.
=> Podívejte se na kompletní sérii školení C ++ zde
Doporučené čtení
- Proměnné v C ++
- Proměnné Pythonu
- Výukový program pro rozhraní Java a abstraktní třídu s příklady
- Konverze typu v C ++
- Proměnné VBScript: Jak deklarovat a používat proměnné - VBScript Dim
- Proměnné a funkce JMeter
- 10 NEJLEPŠÍ poskytovatelé cloudového úložiště zdarma (online úložiště 2021)
- Typy testování migrace: S testovacími scénáři pro každý typ