Wat is het verschil tussen lokale statische en globale statische variabelen?


Beste antwoord

globaal en lokaal: is gerelateerd aan het bereik, dwz waar kan worden gebruikt

statisch: is gerelateerd aan tijd en vluchtigheid, dwz hoe lang kan worden gebruikt

statische variabele in C & C ++ programma wordt slechts één keer gedefinieerd (toegewezen geheugen & beginwaarde nul), zelfs programmabesturing voert aangifteverklaring opnieuw uit. De waarde en levensduur van de statische variabele blijft behouden tot het einde van het programma, maar kan binnen het bereik worden gebruikt.

void staticTest(){

static int i;

printf("\%d\n",i);

i++;

}

void main(){

staticTest();

staticTest();

staticTest();

}

Uitvoer:

0

1

2

In het bovenstaande voorbeeld wordt het gebruik van een lokale statische variabele gedemonstreerd.

globale statische: je kunt een statische variabele in globaal bereik declareren, het zal ook bijna hetzelfde zijn als andere globale variabelen, behalve dat de beginwaarde nul is, als je er geen waarde aan toewijst.

Antwoord

Lokale statisch:

  • Standaardwaarde is nul
  • Opgeslagen in gegevenssectie (bss of geïnitialiseerd) geheugen
  • Bereik of zichtbaarheid bevindt zich binnen het blok of een functie
  • Het leven van een lokale statische variabele begint en eindigt alleen met het programma.

Globaal statisch:

  • Als een globale variabele statisch is, bevindt het bereik of de zichtbaarheid zich alleen binnen dat bestand, zelfs het gebruik van extern in een ander bestand zal niet werken . Het geeft een koppelingsfout.

Voorbeeld 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

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *