Sdílet prostřednictvím


Třídy úložiště jazyka C

Třída úložiště proměnné určuje, jestli má položka "globální" nebo "místní" životnost. Jazyk C volá tyto dvě životnosti "static" a "automatic". Položka s globální životností existuje a má hodnotu v průběhu provádění programu. Všechny funkce mají globální životnost.

Automatické proměnné nebo proměnné s místními životnostmi se přidělují nové úložiště při každém průchodu ovládacího prvku provádění do bloku, ve kterém jsou definované. Při návratu provádění už proměnné nemají smysluplné hodnoty.

Jazyk C poskytuje následující specifikátory třídy úložiště:

Syntaxe

storage-class-specifier:
auto
register
static
extern
typedef
__declspec (extended-decl-modifier-seq ) /* Specifické pro Microsoft */

__declspecS výjimkou , můžete použít pouze jeden storage-class-specifier v declaration-specifier deklaraci. Pokud není provedena žádná specifikace třídy úložiště, deklarace v rámci bloku vytvářejí automatické objekty.

Položky deklarované pomocí specifikátoru auto register mají místní životnost. Položky deklarované pomocí specifikátoru static extern mají globální životnost.

Vzhledem k tomu typedef , že se __declspec sémanticky liší od ostatních čtyř storage-class-specifier terminálů, jsou popsány samostatně. Konkrétní informace o typedefdeklaracích naleznete v tématu typedef Deklarace. Konkrétní informace naleznete __declspecv tématu Rozšířené atributy třídy úložiště.

Umístění deklarací proměnných a funkcí ve zdrojových souborech má vliv také na třídu úložiště a viditelnost. Deklarace mimo všechny definice funkcí se říká, že se zobrazují na "externí úrovni". Deklarace v definicích funkce se zobrazují na "vnitřní úrovni".

Přesný význam jednotlivých specifikátorů třídy úložiště závisí na dvou faktorech:

  • Zda se deklarace zobrazuje na externí nebo interní úrovni

  • Určuje, jestli je deklarovaná položka proměnnou nebo funkcí.

Specifikátory třídy úložiště pro deklarace externí úrovně a specifikátory třídy úložiště pro deklarace interní úrovně popisují storage-class-specifier terminály v jednotlivých typech deklarace a vysvětlují výchozí chování při storage-class-specifier vynechání z proměnné. Specifikátory třídy úložiště s deklaracemi funkcí probírají specifikátory třídy úložiště používané s funkcemi.

Viz také

Deklarace a typy