Paras vastaus
globaali ja paikallinen: liittyy laajuuteen eli mihin sitä voidaan käyttää
staattinen: liittyy aikaan ja volatiliteettiin eli kuinka kauan voidaan käyttää
Staattinen muuttuja C & C ++ -ohjelmassa on määritelty (varattu muisti ja alkuarvo nolla) vain yhden kerran, jopa ohjelman ohjaus suorittaa lausekkeen uudelleen. Staattisen muuttujan arvo ja käyttöikä säilytetään ohjelman loppuun saakka, mutta sitä voidaan käyttää laajuuden sisällä.
void staticTest(){
static int i;
printf("\%d\n",i);
i++;
}
void main(){
staticTest();
staticTest();
staticTest();
}
Tulos:
0
1
2
Yllä olevassa esimerkissä osoitetaan paikallisen staattisen muuttujan käyttö.
globaali staattinen: voit ilmoittaa staattisen muuttujan globaalissa laajuudessa, myös se on melkein sama kuin muu globaali muuttuja, paitsi että sen alkuperäinen arvo on nolla, jos et anna sille mitään arvoa.
Vastaa
Paikallinen staattinen:
- Oletusarvo on nolla
- Tallennettu dataosioon (bss tai alustettu) muistia
- Laajuus tai näkyvyys on lohkossa tai toiminnossa.
- Paikallisen staattisen muuttujan elämä alkaa ja päättyy vain ohjelman kanssa.
Yleinen staattinen:
- Jos yleinen muuttuja on staattinen, laajuus tai näkyvyys on vain kyseisessä tiedostossa, vaikka ulkoisen käyttäminen toisessa tiedostossa ei toimi . Se antaa linkitysvirheen.
Esimerkki 1:
static int a=20;
void xyz()
{
printf("\%d, ", a);
a = 100;
}
int main()
{
printf("\%d, ", a);
{
static int a = 10;
printf("\%d, \n", a);
xyz();
}
printf("\%d", a);
}
// Output is 20, 10, 20, 100