Bästa svaret
globalt och lokalt: är relaterat till omfattning dvs var kan användas
statisk: är relaterad till tid och volatilitet dvs hur länge kan användas
den statiska variabeln i C & C ++ – programmet definieras (tilldelat minne och initialvärde noll) bara en gång, även programstyrning utför deklarationsuttalande igen. Värdet och livslängden för den statiska variabeln bibehålls till slutet av programmet men kan användas inom ramen.
void staticTest(){
static int i;
printf("\%d\n",i);
i++;
}
void main(){
staticTest();
staticTest();
staticTest();
}
Utgång:
0
1
2
I ovanstående exempel visas användning av lokal statisk variabel.
global statisk: du kan deklarera statisk variabel i globalt omfång, den kommer också att vara nästan samma som andra globala variabler förutom att den har initialt värde som noll, om du inte tilldelar något värde till den.
Svar
Lokal statisk:
- Standardvärdet är noll
- Lagras i datasektionen (bss eller initialiserat) av minnet
- Omfattning eller synlighet ligger inom blocket eller en funktion
- Livslängden för den lokala statiska variabeln börjar och slutar bara med programmet.
Global statisk:
- Om en global variabel är statisk, är omfattningen eller synligheten endast inom den filen, även om extern i en annan fil inte fungerar . Det ger länkfel.
Exempel 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