Estático na programação C

Static C Programming



Neste tutorial, explicaremos a palavra-chave static aplicando-a em variáveis ​​e funções. Static é uma palavra-chave usada na programação C e pode ser aplicada usando a seguinte sintaxe:

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 as chamadas de função.



//Example1.c

#incluir

intfun1()
{

intcontar=0;
contar++;
Retornacontar;
}

intfun2()
{
estático intcontar=0;
contar++;
Retornacontar;
}

inta Principal()
{
printf ('fun1 1ª chamada retorna:% d n',fun1());
printf ('fun1 2ª chamada retorna:% d n n',fun1());

printf ('fun2 1ª chamada retorna:% d n',fun2());
printf ('fun2 2ª chamada retorna:% d n',fun2());

Retorna 0;
}


No Exemplo 1.c, temos duas funções: fun1 () e fun2 () . No fun1 () , declaramos uma variável (contagem) e a inicializamos com 0. Em seguida, incrementamos a variável de contagem e retornamos o valor resultante. Usando a Principal() , nós chamamos fun1 () duas vezes, e a cada vez, um valor de 1 é retornado porque a variável de contagem é apagada quando a chamada para fun1 () está completo. No fun2 () declaramos a variável de contagem como uma variável estática. Portanto, seu valor é preservado. Usando a Principal() , nós chamamos fun2 () duas vezes: na primeira vez, um valor de 1 é retornado e, na 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, então a função é local e não pode ser acessada de outro programa C.

Inicialização de variáveis ​​estáticas

Se uma variável estática não for inicializada explicitamente, ela será inicializada como 0.



//Example2.c

#incluir

inta Principal()
{
estático inteu;

printf ('Valor de i:% d n',eu);

Retorna 0;
}


Em Example2.c, declaramos uma variável estática i que não foi inicializada. No entanto, como a variável é estática, ela é inicializada automaticamente em 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.

//Example3.c

#incluir

intfun1()
{
Retorna 5;
}

inta Principal()
{
estático inteu=fun1();
printf ('Valor de i:% d n',eu);
Retorna 0;
}


Em Example3.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

O tempo de vida de uma variável estática e o tempo de vida do programa são iguais.

Se uma variável estática não for inicializada, ela assumirá o valor padrão 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 definida.