Hvad er forskellen mellem lokale statiske og globale statiske variabler?


Bedste svar

globalt og lokalt: er relateret til omfang, dvs. hvor kan bruges

statisk: er relateret til tid og volatilitet, dvs. hvor længe der kan bruges

den statiske variabel i C & C ++ – programmet er kun defineret (allokeret hukommelse & startværdi nul), selv programstyring udfører erklæringserklæring igen. Værdi og levetid for den statiske variabel bevares indtil programmets afslutning, men den kan bruges inden for omfanget.

void staticTest(){

static int i;

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

i++;

}

void main(){

staticTest();

staticTest();

staticTest();

}

Output:

0

1

2

I ovenstående eksempel demonstreres brug af lokal statisk variabel.

global statisk: du kan erklære en statisk variabel i globalt omfang, også vil den være næsten den samme som andre globale variabler, bortset fra at den har den oprindelige værdi som nul, hvis du ikke tildeler den nogen værdi.

Svar

Lokal statisk:

  • Standardværdien er nul
  • Gemt i datasektionen (bss eller initialiseret) af hukommelse
  • Omfang eller synlighed er inden for blokken eller en funktion
  • Levetiden for den lokale statiske variabel starter og slutter kun med programmet.

Global statisk:

  • Hvis en global variabel er statisk, er omfanget eller synligheden kun inden for den fil, selv ved hjælp af ekstern i en anden fil fungerer ikke . Det giver koblingsfejl.

Eksempel 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

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *