¿Cuál es la diferencia entre las variables estáticas globales y estáticas locales?


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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *