statický datový typ název proměnné
Statické lokální proměnné
Když je proměnná ve funkci statická, proměnná zachová svou hodnotu mezi voláními funkcí.
// Příklad 1.C#zahrnout
int fun1 ()
počet int = 0;
count ++;
počet návratů;
int fun2 ()
statický počet int = 0;
count ++;
počet návratů;
int main ()
printf ("fun1 1st call returns:% d \ n", fun1 ());
printf ("fun1 2. volání vrací:% d \ n \ n", fun1 ());
printf ("fun2 1st call returns:% d \ n", fun2 ());
printf ("fun2 2. volání vrací:% d \ n", fun2 ());
návrat 0;
V příkladu 1.c, máme dvě funkce: fun1 () a fun2 (). v fun1 (), deklarujeme jednu proměnnou (count) a inicializujeme ji na 0. Potom zvýšíme proměnnou count a vrátíme výslednou hodnotu. Použitím hlavní(), voláme fun1 () dvakrát a pokaždé, když je vrácena hodnota 1, protože proměnná count je při volání vymazána fun1 () je hotovo. v fun2 () proměnnou count jsme deklarovali jako statickou proměnnou. Jeho hodnota je proto zachována. Použitím hlavní(), voláme fun2 () dvakrát: poprvé se vrátí hodnota 1 a podruhé se vrátí hodnota 2.
Statické globální proměnné
Statická globální proměnná se chová stejným způsobem jako jiné globální proměnné, ale nelze ji získat z jiného programu C.
Statické funkce
V jazyce C jsou funkce ve výchozím nastavení globální. Pokud však deklarujeme statickou funkci, pak je funkce lokální a nelze k ní získat přístup 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říklad 2.C#zahrnout
int main ()
statický int i;
printf ("Hodnota i:% d \ n", i);
návrat 0;
V příkladu 2.c, deklarovali jsme statickou proměnnou i, která není inicializována. Protože je ale 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říklad 3.C#zahrnout
int fun1 ()
návrat 5;
int main ()
static int i = fun1 ();
printf ("Hodnota i:% d \ n", i);
návrat 0;
V příkladu 3.c, zkusíme inicializovat statickou proměnnou pomocí návratové hodnoty fun1 (). Jak však vidíte, při kompilaci kódu se vrátí chyba.
souhrn
Životnost statické proměnné a životnost programu jsou stejné.
Pokud statická proměnná není inicializována, bude mít 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.