Třída paměti
Variable storage class ( angl. Storage class ) je pojem v některých programovacích jazycích . Určuje rozsah proměnné a také to, jak dlouho je proměnná v paměti.
Třídy paměti v C a C++
Proměnná v programovacích jazycích C a C++ musí patřit přesně do jedné třídy úložiště, což je označeno klíčovým slovem, které je zapsáno před typem proměnné.
- auto — automatické ( místní ). Automatické proměnné jsou vytvářeny při vstupu funkce a zničeny při jejím ukončení. Jsou viditelné pouze v rámci funkce nebo bloku, ve kterém jsou definovány. V C++11 byl význam slova autozměněn.
- static — statická proměnná (místní). 1) Pokud je uvnitř funkce statický. Pro takové proměnné je rozsah normální (v rámci funkce), ale životnost je konstantní (hodnota je zachována mezi voláními funkce). 2) statický mimo funkci má jiný význam.
- extern je externí ( globální ) proměnná. Externí proměnné jsou dostupné kdekoli, kde jsou deklarovány, nejen tam, kde jsou definovány. Použití klíčového slova extern umožňuje funkci používat externí proměnnou, i když je definována později v tomto nebo jiném souboru. U takových proměnných dochází k vázání adresy v době propojení.
- register — proměnná registru (místní). Toto slovo je pouze „doporučením“ kompilátoru umístit často používanou proměnnou do registrů procesoru pro zrychlení programu.
Třídu paměti lze vynechat, pak platí následující výchozí hodnoty :
- proměnné deklarované uvnitř funkce nebo bloku jsou považovány za lokální (auto)
- proměnné deklarované mimo všechny funkce jsou považovány za externí.
- funkce jsou považovány za externí.
Statická proměnná deklarovaná mimo jakoukoli funkci se stává externí statickou proměnnou. Rozdíl mezi externí proměnnou a externí statickou proměnnou spočívá v jejich rozsahu. Běžnou externí proměnnou mohou používat funkce v libovolném souboru, ale externí statickou proměnnou mohou používat pouze funkce ve stejném souboru a poté, co byla proměnná definována.
openmp
Pro zajištění paralelního provádění vláken poskytuje OpenMP 2 třídy proměnných: sdílené (sdílené, synchronizované) a soukromé (lokální pro každé vlákno).
Odkazy