Mejor respuesta
global y local: está relacionado con el alcance, es decir, dónde se puede usar
estático: está relacionado con el tiempo y la volatilidad, es decir, cuánto tiempo se puede usar
La variable estática en el programa C & C ++ se define (memoria asignada y valor inicial cero) solo una vez, incluso el control del programa ejecuta la declaración de declaración nuevamente. El valor y la vida de la variable estática se retiene hasta el final del programa, pero se puede usar dentro del alcance.
void staticTest(){
static int i;
printf("\%d\n",i);
i++;
}
void main(){
staticTest();
staticTest();
staticTest();
}
Salida:
0
1
2
En el ejemplo anterior se demuestra el uso de la variable estática local.
global static: puede declarar una variable estática en el alcance global y será casi igual que otra variable global excepto que tiene un valor inicial como cero, si no le asigna ningún valor.
Respuesta
Estático local:
- El valor predeterminado es cero
- Almacenado en la sección de datos (bss o inicializado) de la memoria
- El alcance o la visibilidad está dentro del bloque o una función
- La vida de la variable estática local comienza y solo termina con el programa.
Global static:
- Si una variable global es estática, el alcance o la visibilidad están dentro de ese archivo solamente, incluso el uso de extern en otro archivo no funcionará . Da error de vinculación.
Ejemplo 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