Statické v C programování

Static C Programming



V tomto tutoriálu vysvětlíme statické klíčové slovo jeho aplikací v proměnných a funkcích. Static je klíčové slovo používané v programování v jazyce C a lze jej použít pomocí následující syntaxe:

statický {datový typ} {název proměnné}







Statické lokální proměnné

Je -li proměnná ve funkci statická, zachovává si proměnná svoji hodnotu mezi voláním funkcí.



// Příklad1.c

#zahrnout

intzábava 1()
{

intpočet=0;
počet++;
vrátit sepočet;
}

intzábava 2()
{
statický intpočet=0;
počet++;
vrátit sepočet;
}

inthlavní()
{
printf ('fun1 první hovor se vrací: %d n',zábava 1());
printf ('fun1 2. hovor se vrací: %d n n',zábava 1());

printf ('fun2 1. volání se vrací: %d n',zábava 2());
printf ('fun2 druhé volání se vrací: %d n',zábava 2());

vrátit se 0;
}


V příkladu 1.c máme dvě funkce: zábava1 () a zábava2 () . v zábava1 () , deklarujeme jednu proměnnou (počet) a inicializujeme ji na 0. Poté proměnnou count zvýšíme a vrátíme výslednou hodnotu. Použitím hlavní() , voláme zábava1 () dvakrát a pokaždé je vrácena hodnota 1, protože proměnná count je při volání na vymazána zábava1 () je hotovo. v zábava2 () deklarovali jsme proměnnou count jako statickou proměnnou. Proto je jeho hodnota zachována. Použitím hlavní() , voláme zábava2 () dvakrát: poprvé je vrácena hodnota 1 a podruhé je vrácena hodnota 2.



Statické globální proměnné

Statická globální proměnná se chová stejně jako ostatní globální proměnné, ale nelze k ní přistupovat z jiného programu C.





Statické funkce

V C jsou funkce ve výchozím nastavení globální. Pokud ale deklarujeme statickou funkci, pak je funkce lokální a nelze k ní přistupovat z jiného programu C.

Inicializace statických proměnných

Pokud statická proměnná není explicitně inicializována, je inicializována jako 0.



// Příklad2.c

#zahrnout

inthlavní()
{
statický int;

printf („Hodnota i: %d n',);

vrátit se 0;
}


V příkladu2.c jsme deklarovali statickou proměnnou i, která není inicializována. Protože je však proměnná statická, automaticky se inicializuje na 0.

Je důležité si uvědomit, že statická proměnná musí být inicializována konstantním literálem; nemůžeme použít návratovou hodnotu funkce k inicializaci statické proměnné.

//Příklad3.c

#zahrnout

intzábava 1()
{
vrátit se 5;
}

inthlavní()
{
statický int=zábava 1();
printf („Hodnota i: %d n',);
vrátit se 0;
}


V příkladu3.c se pokusíme inicializovat statickou proměnnou pomocí návratové hodnoty zábava1 () . Jak však vidíte, při kompilaci kódu je vrácena chyba.

souhrn

Životnost statické proměnné a životnost programu jsou stejné.

Pokud není inicializována statická proměnná, převezme výchozí hodnotu 0.

Globální statická proměnná ani statická funkce nejsou přístupné z jiného programu, než ve kterém byla definována.