Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
"Klasa magazynu" zmiennej określa, czy element ma okres istnienia "globalny", czy "lokalny". Język C wywołuje te dwa okresy istnienia "statyczne" i "automatyczne". Element o globalnym okresie istnienia istnieje i ma wartość w trakcie wykonywania programu. Wszystkie funkcje mają okresy istnienia globalne.
Zmienne automatyczne lub zmienne z okresami istnienia lokalnego są przydzielane nowe magazyny za każdym razem, gdy kontrolka wykonywania przechodzi do bloku, w którym są zdefiniowane. Gdy wykonywanie zwraca, zmienne nie mają już znaczących wartości.
Język C udostępnia następujące specyfikatory klasy magazynu:
Składnia
storage-class-specifier:
auto
register
static
extern
typedef
__declspec (
extended-decl-modifier-seq
) /* Specyficzne dla firmy Microsoft */
Z wyjątkiem parametru __declspecstorage-class-specifier można użyć tylko jednego declaration-specifier elementu w deklaracji w deklaracji . Jeśli nie zostanie wykonana żadna specyfikacja klasy magazynu, deklaracje w bloku tworzą obiekty automatyczne.
Elementy zadeklarowane za pomocą specyfikatora auto lub register mają lokalne okresy istnienia. Elementy zadeklarowane za pomocą specyfikatora static lub extern mają okresy istnienia globalne.
Ponieważ typedef i __declspec są semantycznie różne od pozostałych czterech storage-class-specifier terminali, są one omawiane oddzielnie. Aby uzyskać szczegółowe informacje na temat typedefprogramu , zobacz typedef Deklaracje. Aby uzyskać szczegółowe informacje na temat __declspecprogramu , zobacz Extended Storage-Class Attributes (Rozszerzone atrybuty klasy magazynu).
Umieszczanie deklaracji zmiennych i funkcji w plikach źródłowych wpływa również na klasę magazynu i widoczność. Deklaracje poza wszystkimi definicjami funkcji są wyświetlane na "poziomie zewnętrznym". Deklaracje w definicjach funkcji są wyświetlane na "poziomie wewnętrznym".
Dokładne znaczenie każdego specyfikatora klasy magazynu zależy od dwóch czynników:
Określa, czy deklaracja pojawia się na poziomie zewnętrznym, czy wewnętrznym
Określa, czy zadeklarowany element jest zmienną, czy funkcją
Specyfikatory klasy magazynu dla deklaracji na poziomie zewnętrznym i specyfikatorów klasy magazynu dla deklaracji na poziomie wewnętrznym opisują storage-class-specifier terminale w każdym rodzaju deklaracji i wyjaśnić domyślne zachowanie, gdy storage-class-specifier zostanie pominięty ze zmiennej.
Specyfikatory klasy magazynu z deklaracjami funkcji omawia specyfikatory klasy magazynu używane z funkcjami.