Quando a palavra static é usada em uma função, estamos informando ao compilador que essa
função irá permanecer viva durante toda a execução do programa.
Sintaxe
static tipo_retorno nome_funcao( <parametros>){
//corpo
}
Onde
<parametros>: lista de parâmetros
Exemplo 3
#include <stdio.h>
static int funcao()
{
return -1;
}
int main()
{
funcao();
return 0;
}
Saída
-1
Uma variável local quando declarada como static é visível apenas em seu bloco ou função.
Quando a função é chamada ou invocada, todas as chamadas terão a mesma variável compartilhada.
Sintaxe
static tipo_dado nome_variavel;
Exemplo 4
#include <stdio.h>
int funcao()
{
static int variavel = 0;
if(variavel < 4)
{
variavel++;
return variavel;
}
variavel = -1;
return variavel;
}
int main()
{
printf("%d\n",funcao());
printf("%d\n",funcao());
printf("%d\n",funcao());
printf("%d\n",funcao());
printf("%d\n",funcao());
return 0;
}
Saída
1
2
3
4
-1
Quando uma variável global é declarada como static, essa irá permanecer viva durante toda a
execução do programa. No processo de linkagem(Internal Linkage) durante a compilação, ficará
visível apenas no arquivo onde foi declarada.
Sintaxe
static tipo_dado nome_variavel;
Exemplo 4
#include <stdio.h>
int funcao()
{
static int variavel = 0;
if(variavel < 4)
{
variavel++;
return variavel;
}
variavel = -1;
return variavel;
}
int main()
{
printf("%d\n",funcao());
printf("%d\n",funcao());
printf("%d\n",funcao());
printf("%d\n",funcao());
printf("%d\n",funcao());
return 0;
}
Saída
1
2
3
4
-1