statisks datu tips mainīgā nosaukums
Statiskie lokālie mainīgie
Kad mainīgais funkcijā ir statisks, mainīgais saglabā vērtību starp funkciju izsaukumiem.
// Piemērs1.c# iekļaut
int fun1 ()
int skaits = 0;
skaits ++;
atgriešanās skaits;
int fun2 ()
statiskais int skaits = 0;
skaits ++;
atgriešanās skaits;
int main ()
printf ("fun1 1. zvana atgriešanās:% d \ n", fun1 ());
printf ("fun1 2. zvana atgriešanās:% d \ n \ n", fun1 ());
printf ("fun2 1. zvana atgriešanās:% d \ n", fun2 ());
printf ("fun2 2. zvana atgriešanās:% d \ n", fun2 ());
atgriešanās 0;
1. piemērā.c, mums ir divas funkcijas: fun1 () un fun2 (). In fun1 (), mēs deklarējam vienu mainīgo (skaitu) un inicializējam to līdz 0. Tad mēs palielinām skaitītāja mainīgo un atgriežam iegūto vērtību. Izmantojot galvenais (), Mēs saucam fun1 () divreiz, un katru reizi tiek atgriezta vērtība 1, jo skaita mainīgais tiek notīrīts, kad zvans uz fun1 () ir pabeigta. In fun2 () mēs deklarējām skaitāmo mainīgo kā statisko mainīgo. Tāpēc tā vērtība tiek saglabāta. Izmantojot galvenais (), Mēs saucam fun2 () divreiz: pirmo reizi tiek atgriezta vērtība 1, bet otro reizi - vērtība 2.
Statiskie globālie mainīgie
Statiskais globālais mainīgais izturas tāpat kā citi globālie mainīgie, taču tam nevar piekļūt no citas C programmas.
Statiskās funkcijas
C, pēc noklusējuma funkcijas ir globālas. Tomēr, ja mēs deklarējam statisku funkciju, tad funkcija ir lokāla, un tai nevar piekļūt no citas C programmas.
Statisko mainīgo inicializēšana
Ja statiskais mainīgais nav tieši inicializēts, tas tiek inicializēts kā 0.
// Piemērs2.c# iekļaut
int main ()
statiskā int i;
printf ("i vērtība:% d \ n", i);
atgriešanās 0;
2. piemērā.c, mēs deklarējām statisko mainīgo i, kas nav inicializēts. Tā kā mainīgais ir statisks, tas tiek automātiski inicializēts uz 0.
Ir svarīgi atzīmēt, ka statiskais mainīgais ir jāinicializē ar nemainīgu literālu; mēs nevaram izmantot funkcijas atgriešanās vērtību, lai inicializētu statisko mainīgo.
// Piemērs3.c# iekļaut
int fun1 ()
atgriešanās 5;
int main ()
statiskais int i = fun1 ();
printf ("i vērtība:% d \ n", i);
atgriešanās 0;
3. piemērā.c, mēs mēģinām inicializēt statisko mainīgo, izmantojot atgriezto vērtību fun1 (). Tomēr, kā redzat, koda apkopošanas laikā tiek atgriezta kļūda.
Kopsavilkums
Statiskā mainīgā ilgums un programmas kalpošanas laiks ir vienādi.
Ja statiskais mainīgais netiek inicializēts, tas iegūst noklusējuma vērtību 0.
Ne globālais statiskais mainīgais, ne statiskā funkcija nav pieejama no citas programmas, izņemot to, kurā tā tika definēta.