Definição static

Sintaxe:

static tipo_variável 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:

/* 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;
}
static.txt · Última modificação: 2008/05/15 14:59 por laureano
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0