Ferramentas do usuário

Ferramentas do site


static
no way to compare when less than two revisions

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.


static [2023/09/12 16:14] (atual) – criada - edição externa 127.0.0.1
Linha 1: Linha 1:
 +====== Definição static ======
  
 +Sintaxe:
 +
 +''static [[tipos_dados|tipo_variável]] [[variavel_definicao|nome_variável]]''
 +
 +----
 +
 +Como padrão toda variável definida dentro de uma função é alocada na pilha interna de execução da função. Ao final da função a pilha é liberada, liberando assim a memória alocada pela variável. Na próxima chamada à função é feita uma nova alocação na pilha assim por diante.
 +
 +Deve-se indicar através da palavra **''static''** na definição de uma variável, quando for necessário que a variável local de uma função permaneça com o seu valor mantido,  permitindo assim que na próxima chamada utilizar o valor anterior.
 +
 +Veja o exemplo:
 +
 +<code c>
 +/* programa static.c */
 +#include <stdio.h>
 +
 +int somatorio (int, int);
 +
 +int main (void)
 +{
 +   int iValor_a;
 +   int i;
 +
 +   i = 1;
 +   while (1)
 +   {
 +      printf ("Entre com um valor:");
 +      scanf ("%d", &iValor_a);
 +      if (iValor_a == 0)
 +      {
 +         break;
 +      }
 +      printf ("Somatorio %d\n", somatorio (i++, iValor_a));
 +   }
 +   return 0;
 +}
 +
 +int somatorio (int iContador, int iValor)
 +{
 +   static int iSoma; /* Declara a variável como static, ou seja, diz ao compilador que o conteúdo da variável 
 +                        iSoma deve ser guardado na memória até o final da execução do programa */
 +   if (iContador == 1)
 +   {
 +      iSoma = iValor;  /* Na primeira execução, a variável iSoma recebe o valor digitado... */
 +   }
 +   else
 +   {
 +      iSoma += iValor; /* ... nas demais execuções, a variável iSoma recebe o seu próprio valor somado ao conteúdo de iValor */
 +   }
 +   return iSoma;
 +}
 +</code>
static.txt · Última modificação: 2023/09/12 16:14 por 127.0.0.1