Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
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 __declspec
declaration-specifier
można użyć tylko jednego storage-class-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 typedef
programu , zobacz typedef
Deklaracje. Aby uzyskać szczegółowe informacje na temat __declspec
programu , 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.