Namespaces
Variants

Static storage duration

From cppreference.net

Un objeto cuyo identificador se declara sin el especificador de clase de almacenamiento _Thread_local , y ya sea con enlace externo o interno linkage o con el especificador de clase de almacenamiento static , tiene duración de almacenamiento estático. Su tiempo de vida es la ejecución completa del programa y su valor almacenado se inicializa solo una vez, antes del inicio del programa.

Notas

Dado que su valor almacenado se inicializa solo una vez, un objeto con duración de almacenamiento estático puede perfilar las invocaciones de una función.

El otro uso de la palabra clave static es el ámbito de archivo .

Ejemplo

#include <stdio.h>
void f (void)
{
    static int count = 0;   // static variable   
    int i = 0;              // automatic variable
    printf("%d %d\n", i++, count++);
}
int main(void)
{
    for (int ndx=0; ndx<10; ++ndx)
        f();
}

Salida:

0 0
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8
0 9