statický dátový typ názov premennej
Statické lokálne premenné
Keď je premenná vo funkcii statická, premenná si zachová svoju hodnotu medzi volaniami funkcií.
// Príklad1.c#include
int fun1 ()
počet int = 0;
počet ++;
počet návratov;
int fun2 ()
počet statických int = 0;
počet ++;
počet návratov;
int main ()
printf ("fun1 1. volanie vracia:% d \ n", fun1 ());
printf ("fun1 2. volanie vracia:% d \ n \ n", fun1 ());
printf ("fun2 1. volanie vracia:% d \ n", fun2 ());
printf ("fun2 2. volanie vracia:% d \ n", fun2 ());
návrat 0;
V príklade 1.c, máme dve funkcie: fun1 () a fun2 (). V fun1 (), deklarujeme jednu premennú (count) a inicializujeme ju na 0. Potom zvýšime premennú count a vrátime výslednú hodnotu. Použitím hlavný(), voláme fun1 () dvakrát a zakaždým sa vráti hodnota 1, pretože premenná count sa pri volaní vymaže fun1 () je dokončená. V fun2 () premennú count sme deklarovali ako statickú premennú. Preto je jeho hodnota zachovaná. Použitím hlavný(), voláme fun2 () dvakrát: prvýkrát sa vráti hodnota 1 a druhýkrát sa vráti hodnota 2.
Statické globálne premenné
Statická globálna premenná sa chová rovnako ako iné globálne premenné, ale nemožno k nej získať prístup z iného programu C.
Statické funkcie
V jazyku C sú funkcie predvolene globálne. Ak však deklarujeme statickú funkciu, potom je funkcia lokálna a nemožno k nej získať prístup z iného programu C.
Inicializácia statických premenných
Ak statická premenná nie je explicitne inicializovaná, potom sa inicializuje ako 0.
// Príklad2.c#include
int main ()
statický int i;
printf ("Hodnota i:% d \ n", i);
návrat 0;
V príklade 2.c, deklarovali sme statickú premennú i, ktorá nie je inicializovaná. Pretože je však premenná statická, automaticky sa inicializuje na 0.
Je dôležité si uvedomiť, že statická premenná musí byť inicializovaná konštantným literálom; nemôžeme použiť návratovú hodnotu funkcie na inicializáciu statickej premennej.
// Príklad3.c#include
int fun1 ()
návrat 5;
int main ()
static int i = fun1 ();
printf ("Hodnota i:% d \ n", i);
návrat 0;
V príklade 3.c, pokúsime sa inicializovať statickú premennú pomocou návratovej hodnoty fun1 (). Ako však vidíte, pri kompilácii kódu sa vráti chyba.
Zhrnutie
Životnosť statickej premennej a životnosť programu sú rovnaké.
Ak statická premenná nie je inicializovaná, bude mať predvolenú hodnotu 0.
Globálna statická premenná ani statická funkcia nie sú prístupné z iného programu, ako v ktorom bola definovaná.