Melhor resposta
global e local: está relacionado ao escopo, ou seja, onde pode ser usado
estático: está relacionado ao tempo e volatilidade, ou seja, por quanto tempo pode ser usado
a variável estática no programa C e C ++ é definida (memória alocada e valor inicial zero) apenas uma vez, até mesmo o controle do programa executa a declaração de declaração novamente. O valor e a vida da variável estática são retidos até o final do programa, mas podem ser usados dentro do escopo.
void staticTest(){
static int i;
printf("\%d\n",i);
i++;
}
void main(){
staticTest();
staticTest();
staticTest();
}
Resultado:
0
1
2
No exemplo acima, é demonstrado o uso da variável estática local.
estática global: você pode declarar a variável estática no escopo global também será quase igual a outra variável global, exceto pelo valor inicial igual a zero, se você não atribuir nenhum valor a ela.
Resposta
Estático local:
- O valor padrão é zero
- Armazenado na seção de dados (bss ou inicializado) de memória
- O escopo ou visibilidade está dentro do bloco ou função
- A vida da variável estática local começa e só termina com o programa.
Estático global:
- Se uma variável global for estática, o escopo ou visibilidade está dentro desse arquivo apenas, mesmo usando extern em outro arquivo não funcionará . Ele fornece um erro de ligação.
Exemplo 1:
static int a=20;
void xyz()
{
printf("\%d, ", a);
a = 100;
}
int main()
{
printf("\%d, ", a);
{
static int a = 10;
printf("\%d, \n", a);
xyz();
}
printf("\%d", a);
}
// Output is 20, 10, 20, 100