PDA

View Full Version : Variáveis Estáticas



forumforex
24-12-2018, 01:11 PM
A classe de armazenamento estático (static) define uma variável estática. O modificador static é indicado antes do tipo do dado.

Exemplo:

int somefunc()
{
static int flag=10;
...
return(flag);
}

Uma variável estática pode ser inicializada por uma constante ou expressão constante correspondente ao seu tipo, diferentemente de uma variável local simples, que pode ser inicializada por qualquer expressão.

Variáveis estáticas existem a partir do momento de execução do programa e são inicializados somente uma vez antes que a função especializada OnInit() seja chamada. Se valores iniciais não forem especificados, variáveis da classe de armazenamento estático assumem valores iniciais zero.

Variáveis locais declarados com a palavra-chave static retém seus valores durante todo o tempo de vida da função. A cada próxima chamada da função, tais variáveis locais contêm os valores que elas tinham durante a chamada anterior.

Quaisquer variáveis em um bloco, exceto parâmetros formais de uma função, podem ser definidas como estáticas. Se uma variável declarada em nível local não for uma variável estática, a memória para tal variável é alocada automaticamente em uma pilha de programa.

Exemplo:

int Counter()
{
static int count;
count++;
if(count%100==0) Print("A função Counter tem sido chamada ",count," tempos");
return count;
}
void OnStart()
{
//---
int c=345;
for(int i=0;i<1000;i++)
{
int c=Counter();
}
Print("c =",c);
}