statikus {adattípus} {változó neve}
Statikus helyi változók
Ha egy függvény változója statikus, akkor a változó megőrzi értékét a függvényhívások között.
//Példa1.c
#befoglalni
intszórakoztató1()
{
intszámol=0;
számol++;
Visszatérésszámol;
}
intszórakoztató2()
{
statikus intszámol=0;
számol++;
Visszatérésszámol;
}
intfő-()
{
printf ('fun1 Az első hívás visszatér: %d n',szórakoztató1());
printf ('fun1 2. hívás visszatér: %d n n',szórakoztató1());
printf ('fun2 Az első hívás visszatér: %d n',szórakoztató2());
printf ('fun2 2. hívás visszatér: %d n',szórakoztató2());
Visszatérés 0;
}
Az 1.c példában két függvényünk van: szórakoztató1 () és szórakoztató2 () . Ban ben szórakoztató1 () , deklarálunk egy változót (count), és inicializáljuk 0 -ra. Ezután növeljük a count változót, és visszaadjuk a kapott értéket. Használata fő() , hívjuk szórakoztató1 () kétszer, és minden alkalommal 1 -es érték kerül visszaadásra, mert a számláló változó törlődik a híváskor szórakoztató1 () kész. Ban ben szórakoztató2 () a count változót statikus változónak nyilvánítottuk. Ezért értéke megmarad. Használata fő() , hívjuk szórakoztató2 () kétszer: az első alkalommal az 1 -es, a második alkalommal a 2 -es érték kerül visszaadásra.
Statikus globális változók
A statikus globális változó ugyanúgy viselkedik, mint a többi globális változó, de más C programból nem érhető el.
Statikus függvények
A C -ben a funkciók alapértelmezés szerint globálisak. Ha azonban statikus függvényt deklarálunk, akkor a függvény helyi, és nem érhető el egy másik C programból.
Statikus változók inicializálása
Ha egy statikus változót nem explicit módon inicializálnak, akkor 0 -val inicializálják.
//Példa2.c
#befoglalni
intfő-()
{
statikus intén;
printf ('I értéke: %d n',én);
Visszatérés 0;
}
A 2.c példában egy statikus i változót deklaráltunk, amely nincs inicializálva. Mivel azonban a változó statikus, automatikusan inicializálja 0 -ra.
Fontos megjegyezni, hogy egy statikus változót állandó literálral kell inicializálni; nem használhatjuk a függvény visszatérési értékét egy statikus változó inicializálására.
//Példa3.c#befoglalni
intszórakoztató1()
{
Visszatérés 5;
}
intfő-()
{
statikus intén=szórakoztató1();
printf ('I értéke: %d n',én);
Visszatérés 0;
}
A 3.c példában egy statikus változót próbálunk inicializálni a visszatérési érték használatával szórakoztató1 () . Azonban, mint látható, a kód fordításakor hibaüzenet jelenik meg.
Összefoglaló
A statikus változó élettartama és a program élettartama egyenlő.
Ha egy statikus változót nem inicializál, akkor az alapértelmezett 0 értéket vesz fel.
Sem egy globális statikus változó, sem egy statikus függvény nem érhető el egy olyan programtól, amelyik nem definiálta.