Almacenamiento estático y almacenamiento dinámico de variables.
En primer lugar, el almacenamiento estático y el almacenamiento dinámico son formas de almacenar variables en la memoria.
Las variables en lenguaje C se dividen en variables locales (automáticas), variables de registro (registro), variables globales (externas) y variables estáticas (estáticas). Las variables locales y las variables de registro se almacenan en la memoria como almacenamiento dinámico, y las variables externas y las variables estáticas se almacenan en la memoria como almacenamiento estático. (Nota del autor: no existe una "variable global" real en el lenguaje C. Las que habitualmente se denominan erróneamente "variables globales" generalmente son objetos de alcance de archivo. Referencia: variables globales - Wikipedia)
Las variables almacenadas estáticas son almacenado en el área estática de la memoria y no se liberará durante todo el ciclo de vida del programa. A las variables almacenadas dinámicamente se les asignan ubicaciones de almacenamiento durante la ejecución del programa y se liberan después de su uso.
Si una variable almacenada estáticamente no se inicializa después de la declaración, el sistema la inicializará automáticamente a "0" o '\0' según el tipo de datos. Si una variable almacenada dinámicamente no se inicializa después de la declaración, su valor no está definido.