statisks {datu tips} {mainīgā nosaukums}
Statiski vietējie mainīgie
Ja mainīgais funkcijā ir statisks, mainīgais saglabā vērtību starp funkciju izsaukumiem.
//Piemērs1.c
#iekļaut
intjautri 1()
{
intsaskaitīt=0;
saskaitīt++;
atgrieztiessaskaitīt;
}
intjautri2()
{
statisks intsaskaitīt=0;
saskaitīt++;
atgrieztiessaskaitīt;
}
intgalvenais()
{
printf ('fun1 1. zvans atgriežas: %d n',jautri 1());
printf ('fun1 Otrais zvans atgriežas: %d n n',jautri 1());
printf ('fun2 1. zvans atgriežas: %d n',jautri2());
printf ('fun2 Otrais zvans atgriežas: %d n',jautri2());
atgriezties 0;
}
1.c piemērā mums ir divas funkcijas: jautri1 () un jautri2 () . In jautri1 () , mēs deklarējam vienu mainīgo (skaitu) un inicializējam to līdz 0. Tad mēs palielinām skaitļa mainīgo un atgriežam iegūto vērtību. Izmantojot galvenais () , Mēs saucam jautri1 () divreiz un katru reizi tiek atgriezta vērtība 1, jo, mainoties skaitam, tiek mainīts mainīgais jautri1 () ir pabeigta. In jautri2 () mainīgo skaitu mēs deklarējām kā statisku mainīgo. Tāpēc tā vērtība tiek saglabāta. Izmantojot galvenais () , Mēs saucam jautri2 () divas reizes: pirmajā reizē tiek atgriezta vērtība 1, bet otro reizi tiek atgriezta vērtība 2.
Statiski globālie mainīgie
Statisks globālais mainīgais darbojas 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 statisks mainīgais nav skaidri inicializēts, tas tiek inicializēts kā 0.
//Piemērs2.c
#iekļaut
intgalvenais()
{
statisks inti;
printf ('I vērtība: %d n',i);
atgriezties 0;
}
Piemērā2.c mēs deklarējām statisku mainīgo i, kas nav inicializēts. Tomēr, tā kā mainīgais ir statisks, tas tiek automātiski inicializēts uz 0.
Ir svarīgi atzīmēt, ka statisks mainīgais jāinicializē ar nemainīgu burtu; mēs nevaram izmantot funkcijas atgriešanas vērtību, lai inicializētu statisku mainīgo.
//Piemērs3.c#iekļaut
intjautri 1()
{
atgriezties 5;
}
intgalvenais()
{
statisks inti=jautri 1();
printf ('I vērtība: %d n',i);
atgriezties 0;
}
Piemērā3.c mēs mēģinām inicializēt statisku mainīgo, izmantojot atgriežamo vērtību jautri1 () . Tomēr, kā redzat, koda apkopošanas laikā tiek atgriezta kļūda.
Kopsavilkums
Statiskā mainīgā kalpošanas laiks un programmas kalpošanas laiks ir vienādi.
Ja statiskais mainīgais netiek inicializēts, tas iegūs noklusējuma vērtību 0.
Ne globālajam statiskajam mainīgajam, ne statiskajai funkcijai nav pieejama cita programma, nevis tā, kurā tā tika definēta.