Třídy úložiště jazyka C
„Paměťová třída“ proměnné určuje, zda má položka „globální“ nebo „místní“ životnost.Jazyk C nazývá tyto životnosti „statická“ a „automatická“. Položka s globální životností existuje a má hodnotu během provádění programu.Všechny funkce mají globální životnost.
Automatickým proměnným nebo proměnným s místní životností je paměť přidělena pokaždé, když provádění vstoupí do bloku, ve kterém jsou definovány.Když se provádění vrátí, nemají tyto proměnné již platné hodnoty.
Jazyk C poskytuje následující specifikátory paměťové třídy:
Syntax
specifikátor-paměťové-třídy:
autoregister
static
extern
typedef
__declspec ( rozšířená-sekvence-modifikátoru-decl ) /* Specifické pro společnost Microsoft */
S výjimkou specifikátoru __declspec lze použít pouze jeden specifikátor paměťové třídy v deklaraci specifikátor-deklarace.Pokud není zadán žádný specifikátor paměťové třídy, deklarace v rámci bloku vytvoří automatické objekty.
Položky deklarované pomocí specifikátorů auto nebo register mají místní životnost.Položky deklarované pomocí specifikátorů static nebo extern mají globální životnost.
Protože jsou specifikátory typedef a __declspec sémanticky odlišné od ostatních čtyř specifikátorů paměťové třídy, jsou popsány samostatně.Konkrétní informace o specifikátoru typedef naleznete v tématu Deklarace typedef.Konkrétní informace o specifikátoru __declspec naleznete v tématu Rozšířené atributy paměťové třídy.
Umístění deklarací proměnných a funkcí v rámci zdrojového souboru ovlivňuje také paměťovou třídu a viditelnost.Deklarace mimo definice funkce je označována, že se zobrazí na „vnější úrovni“. Deklarace v rámci definice funkce se zobrazí na „vnitřní úrovni“.
Přesný význam každého specifikátoru paměťové třídy závisí na dvou faktorech:
Zda se deklarace zobrazí na vnější nebo vnitřní úrovni
Zda je deklarovaná položka proměnná nebo funkce
Témata Specifikátory paměťových tříd pro deklarace vnější úrovně a Specifikátory paměťových tříd pro deklarace vnitřní úrovně popisují specifikátory paměťové třídy pro každý způsob deklarace a popisují výchozí chování, když je specifikátor paměťové třídy proměnné vynechán.Téma Specifikátory paměťové třídy s deklarací funkce popisuje specifikátory paměťové třídy použité s funkcemi.