staattinen tietotyyppi muuttujan nimi
Staattiset paikalliset muuttujat
Kun funktion muuttuja on staattinen, muuttuja säilyttää arvon funktiokutsujen välillä.
// Esimerkki 1.c#sisältää
int hauskaa1 ()
int-määrä = 0;
laskea ++;
paluumäärä;
int hauska2 ()
staattinen int-määrä = 0;
laskea ++;
paluumäärä;
int main ()
printf ("fun1: n ensimmäinen puhelu palauttaa:% d \ n", fun1 ());
printf ("fun1 2. puhelu palauttaa:% d \ n \ n", fun1 ());
printf ("fun2 1. puhelu palauttaa:% d \ n", fun2 ());
printf ("fun2 2. puhelu palauttaa:% d \ n", fun2 ());
paluu 0;
Esimerkissä 1.c, meillä on kaksi toimintoa: hauskaa1 () ja hauskaa2 (). Sisään hauskaa1 (), ilmoitetaan yksi muuttuja (määrä) ja alustetaan se arvoon 0. Sitten kasvatamme laskemuuttujaa ja palautamme tuloksena olevan arvon. Käyttämällä main (), Kutsumme hauskaa1 () kahdesti, ja joka kerta, arvo 1 palautetaan, koska laskentamuuttuja tyhjennetään, kun soitetaan hauskaa1 () on suoritettu. Sisään hauskaa2 () ilmoitimme laskevamuuttujan staattiseksi muuttujaksi. Siksi sen arvo säilyy. Käyttämällä main (), Kutsumme hauskaa2 () kahdesti: ensimmäisellä kerralla arvo 1 palautetaan ja toisen kerran arvo 2 palautetaan.
Staattiset globaalit muuttujat
Staattinen globaali muuttuja käyttäytyy samalla tavalla kuin muut globaalit muuttujat, mutta sitä ei voida käyttää toisesta C-ohjelmasta.
Staattiset toiminnot
C: ssä funktiot ovat oletusarvoisesti globaaleja. Jos kuitenkin ilmoitamme staattisen funktion, toiminto on paikallinen eikä siihen pääse toisesta C-ohjelmasta.
Staattisten muuttujien alustaminen
Jos staattista muuttujaa ei alusteta nimenomaisesti, se alustetaan arvona 0.
// Esimerkki 2.c#sisältää
int main ()
staattinen int i;
printf ("i: n arvo:% d \ n", i);
paluu 0;
Esimerkissä 2.c, ilmoitimme staattisen muuttujan i, jota ei alusteta. Koska muuttuja on staattinen, se alustetaan automaattisesti arvoon 0.
On tärkeää huomata, että staattinen muuttuja on aloitettava vakiolitraalilla; emme voi käyttää funktion palautusarvoa staattisen muuttujan alustamiseen.
// Esimerkki 3.c#sisältää
int hauskaa1 ()
paluu 5;
int main ()
staattinen int i = fun1 ();
printf ("i: n arvo:% d \ n", i);
paluu 0;
Esimerkissä 3.c, yritämme alustaa staattisen muuttujan käyttämällä paluuarvoa hauskaa1 (). Kuten näette, virhe palautetaan koodia käännettäessä.
Yhteenveto
Staattisen muuttujan ja ohjelman elinikä ovat samat.
Jos staattista muuttujaa ei alusteta, se saa oletusarvon 0.
Globaalia staattista muuttujaa eikä staattista toimintoa ei voi käyttää muusta ohjelmasta kuin siitä, jossa se määritettiin.