C Třída skladování

V tomto kurzu se dozvíte o rozsahu a životnosti místních a globálních proměnných. Dozvíte se také statické a registrační proměnné.

Každá proměnná v programování C má dvě vlastnosti: typ a třídu úložiště.

Typ odkazuje na datový typ proměnné. Třída úložiště určuje rozsah, viditelnost a životnost proměnné.

Existují 4 typy třídy úložiště:

  1. automatický
  2. externí
  3. statický
  4. Registrovat

Místní proměnná

Proměnné deklarované uvnitř bloku jsou automatické nebo místní proměnné. Místní proměnné existují pouze uvnitř bloku, ve kterém je deklarována.

Vezměme si příklad.

 #include int main(void) ( for (int i = 0; i < 5; ++i) ( printf("C programming"); ) // Error: i is not declared at this point printf("%d", i); return 0; )

Při spuštění výše uvedeného programu se zobrazí chybový nedeklarovaný identifikátor i. Je to proto, že i je deklarováno uvnitř forbloku smyčky. Mimo blok je to nehlášené.

Vezměme si další příklad.

  int main() ( int n1; // n1 is a local variable to main() ) void func() ( int n2; // n2 is a local variable to func() ) 

Ve výše uvedeném příkladu je n1 lokální main()a n2 je lokální func().

To znamená, že nemáte přístup k proměnné n1 uvnitř, func()protože existuje pouze uvnitř main(). Podobně nemůžete přistupovat k proměnné n2 uvnitř, main()protože existuje pouze uvnitř func().

Globální proměnná

Proměnné, které jsou deklarovány mimo všechny funkce, se označují jako externí nebo globální proměnné. Jsou přístupné z jakékoli funkce uvnitř programu.

Příklad 1: Globální proměnná

 #include void display(); int n = 5; // global variable int main() ( ++n; display(); return 0; ) void display() ( ++n; printf("n = %d", n); ) 

Výstup

 n = 7

Předpokládejme, že globální proměnná je deklarována v file1. Pokud se pokusíte použít tuto proměnnou v jiném souboru file2, kompilátor si stěžuje. K vyřešení tohoto problému se klíčové slovo externpoužívá file2k označení, že externí proměnná je deklarována v jiném souboru.

Registrovat proměnnou

registerKlíčové slovo se používá k deklarovat registru proměnné. Registrované proměnné měly být rychlejší než lokální proměnné.

Moderní kompilátory jsou však velmi dobré v optimalizaci kódu a existuje vzácná šance, že díky použití proměnných registru bude váš program rychlejší.

Pokud nepracujete na vestavěných systémech, kde víte, jak optimalizovat kód pro danou aplikaci, není použití proměnných registrů k dispozici.

Statická proměnná

Statická proměnná je deklarována pomocí staticklíčového slova. Například;

 statický int i;

Hodnota statické proměnné přetrvává až do konce programu.

Příklad 2: Statická proměnná

 #include void display(); int main() ( display(); display(); ) void display() ( static int c = 1; c += 5; printf("%d ",c); ) 

Výstup

 6 11

Během prvního volání funkce je hodnota c inicializována na 1. Jeho hodnota se zvýší o 5. Nyní je hodnota c 6, což je vytištěno na obrazovce.

Během druhého volání funkce se c znovu neinicializuje na 1. Je to proto, že c je statická proměnná. Hodnota c se zvýší o 5. Nyní bude její hodnota 11, která se vytiskne na obrazovce.

Zajímavé články...