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ý intjá;
printf („Hodnota i: %d n',já);
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ý intjá=zábava 1();
printf („Hodnota i: %d n',já);
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.