why variable used functions example estatica are c static global

variable - volatile c



Estático vs global (5)

El alcance de la función / variable estática está dentro del mismo archivo, a pesar de que incluya el archivo como parte de un archivo fuente diferente.

El alcance de la variable global está en todos los archivos en los que está incluido. Para incluir la variable en un archivo fuente diferente, usamos extern antes de la declaración de la variable. No se vuelve a asignar memoria para la variable en este caso.

extern se utiliza para declarar una variable C sin definirla. extern palabra clave extern amplía la visibilidad de las variables C y las funciones C. Como las funciones son visibles en todo el programa por defecto, el uso de extern no es necesario en la declaración / definición de la función. Su uso es redundante.

Si tengo un archivo C como abajo, ¿cuál es la diferencia entre i y j ?

#include <stdio.h> #include <stdlib.h> static int i; int j; int main () { //Some implementation }


La diferencia es que i tiene un enlace interno j tiene un enlace externo. Esto significa que puede acceder a j desde otros archivos con los que se vincula, mientras que i solo está disponible en el archivo donde se declara.


i no es visible fuera del módulo; j es accesible a nivel mundial.

Es decir, otro módulo, que está vinculado a él, puede hacerlo.

extern int j;

y luego ser capaz de leer y escribir el valor en j . El mismo otro módulo no puede acceder a i , pero podría declarar su propia instancia, incluso una global, que no es visible para el primer módulo.


i tiene un enlace interno, por lo que no puede usar el nombre i en otros archivos de origen (estrictamente unidades de traducción) para referirse al mismo objeto.

j tiene un enlace externo, por lo que puede usar j para referirse a este objeto si lo declara extern en otra unidad de traducción.


Tendré enlaces estáticos , es decir, la variable es accesible solo en el archivo actual.

j debe definirse como extern , es decir

extern int j;

en otro archivo de encabezado ( .h ), y luego tendrá un enlace externo , y se puede acceder a través de los archivos.