Mitä eroa on paikallisten staattisten ja globaalien staattisten muuttujien välillä?


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

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *