====== 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: /* programa static.c */ #include 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; }