No es correcto decir que las variables estáticas "no se puede acceder" desde el exterior. Ser declarado static
no tiene absolutamente nada que ver con la posibilidad del acceso externo.
Cuando se declara alguna entidad static
, solo significa que esta entidad no se asociará con otras entidades del mismo nombre en otras unidades de traducción.
Por ejemplo, cuando se declara dos extern
nombres de las variables a
en diferentes unidades de traducción, estas variables son en realidad la misma, sola variable. Cuando declara dos variables static
llamadas a
en diferentes unidades de traducción, estas variables son dos variables independientes diferentes. Esto es lo que static
hace en C. Nada más.
Hablando en términos más cotidianos, no es posible enlace a variables estáticas desde el exterior, es decir, no es posible pedir enlazador para hacernos acceder a la variable estática por su nombre desde el exterior. Sin embargo, siempre es posible acceder a él de alguna otra manera, como a través de un puntero, suponiendo que haya logrado obtener ese puntero de alguna manera.
La pregunta debe estar en stackoverflow ya que se trata de la programación – Mark
+1 para esta pregunta.Nunca lo pensé :) – hari
Ni siquiera necesitas un puntero 'externo' para "acceder" a la variable. Un puntero a la variable también puede devolverse desde una función, o asignarse a un puntero a puntero desreferenciado. – aschepler