Mi a különbség a helyi statikus és a globális statikus változók között?


Legjobb válasz

globális és helyi: összefügg a hatókörrel, azaz hol használhatók

static: az idővel és a volatilitással, azaz a meddig használhatókkal

A C & C ++ programban a statikus változó csak egyszer van meghatározva (lefoglalt memória és kezdeti érték nulla), még a programvezérlés is újra végrehajtja a deklarációs utasítást. A statikus változó értéke és élettartama megmarad a program végéig, de felhasználható a hatókörön belül.

void staticTest(){

static int i;

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

i++;

}

void main(){

staticTest();

staticTest();

staticTest();

}

Kimenet:

0

1

2

A fenti példában bemutatjuk a helyi statikus változó használatát.

globális statikus: deklarálhatod a statikus változó globális hatókörét, és ez majdnem megegyezik a többi globális változóval, kivéve, ha a kezdeti értéke nulla, ha nem adsz hozzá értéket.

Válasz

Helyi statikus:

  • Az alapértelmezett érték nulla
  • Az adatrészben tárolva (bss vagy inicializált) memória
  • A hatókör vagy a láthatóság a blokkon vagy a függvényen belül van.
  • A helyi statikus változó élettartama csak a programmal kezdődik és ér véget.

Globális statikus:

  • Ha egy globális változó statikus, akkor a hatókör vagy a láthatóság csak az adott fájlban található, még akkor sem, ha az externet másik fájlban használjuk . Összekapcsolási hibát ad.

1. példa:

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

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük