Curso de C
Variáveis Static
Você está em: MarMSX >> Cursos >> C
O modificador static cria uma variável local estática, que não é destruída quando a função termina. Veja o exemplo a seguir.
#include <stdio.h>
void funcao()
{
static int a=0;
int b=0;
printf("a=%d e b=%d\n", a, b);
a++;
b++;
}
main()
{
int i;
for (i=0; i<5; i++)
funcao();
}
Saída:
a=0 e b=0
a=1 e b=0
a=2 e b=0
a=3 e b=0
a=4 e b=0
A variável "a" é estática e permanece na memória, enquanto que "b" é recriada a cada vez que a função é chamada.
Como "a" é criado em tempo de compilação, o valor 0 é atribuído antes da função ser chamada. A cada passada na função, a atribuição na declaração é ignorada, pois a variável já foi criada. Entretanto, a atribuição "a=0" fora da declaração irá fazer com que "a" seja igual a zero.
Exemplo:
static int a;
a=0;
Nesse caso, o valor de "a" será sempre 0.