estático Tipo de dados nome da variável
Variáveis locais estáticas
Quando uma variável em uma função é estática, a variável preserva seu valor entre chamadas de função.
//Exemplo 1.c
No Exemplo 1.C, temos duas funções: fun1 () e fun2 (). Em fun1 (), Declaramos uma variável (contagem) e inicializamos para 0. Em seguida, aumentamos a variável de contagem e retornamos o valor resultante. Usando principal(), nós chamamos fun1 () duas vezes e cada vez, um valor de 1 é retornado porque a variável de contagem é limpa quando a chamada para fun1 () está completo. Em fun2 () Declaramos a variável de contagem como uma variável estática. Portanto, seu valor é preservado. Usando principal(), nós chamamos fun2 () duas vezes: a primeira vez, um valor de 1 é retornado e a segunda vez, um valor de 2 é retornado.
Variáveis globais estáticas
Uma variável global estática se comporta da mesma maneira que outras variáveis globais, mas não pode ser acessada de outro programa C.
Funções estáticas
Em C, as funções são globais por padrão. No entanto, se declararmos uma função estática, a função é local e não poderá ser acessada de outro programa C.
Inicialização de variáveis estáticas
Se uma variável estática não for explicitamente inicializada, ela será inicializada como 0.
// Exemplo2.c
No exemplo2.c, declaramos uma variável estática i que não é inicializada. No entanto, como a variável é estática, ela é automaticamente inicializada para 0.
É importante observar que uma variável estática deve ser inicializada por um literal constante; Não podemos usar o valor de retorno de uma função para inicializar uma variável estática.
// Exemplo3.c
No exemplo3.c, tentamos inicializar uma variável estática usando o valor de retorno de fun1 (). No entanto, como você pode ver, um erro é retornado quando o código é compilado.
Resumo
A vida útil de uma variável estática e a vida útil do programa são iguais.
Se uma variável estática não for inicializada, ela assumirá um valor padrão de 0.
Nem uma variável estática global nem uma função estática são acessíveis a partir de um programa diferente daquele em que foi definido.