Variável automática - Automatic variable
Em programação de computador , uma variável automática é uma variável local que é alocada e desalocada automaticamente quando o fluxo do programa entra e sai do escopo da variável. O escopo é o contexto léxico, particularmente a função ou bloco no qual uma variável é definida. Os dados locais são normalmente (na maioria dos idiomas) invisíveis fora da função ou contexto léxico onde são definidos. Os dados locais também são invisíveis e inacessíveis para uma função chamada , mas não são desalocados, voltando ao escopo conforme o thread de execução retorna ao chamador.
Variáveis locais automáticas se aplicam principalmente a linguagens recursivas com escopo léxico . As variáveis locais automáticas são normalmente alocadas na estrutura da pilha do procedimento em que são declaradas. Isso foi feito originalmente para alcançar a reentrada e permitir a recursão , uma consideração que ainda se aplica hoje. O conceito de variáveis automáticas em funções recursivas (e aninhadas ) em uma linguagem com escopo léxico foi introduzido para um público mais amplo com o ALGOL no final dos anos 1950 e posteriormente popularizado por seus muitos descendentes.
O termo variável local geralmente é sinônimo de variável automática, uma vez que são a mesma coisa em muitas linguagens de programação, mas local é mais geral - a maioria das variáveis locais são variáveis locais automáticas, mas também existem variáveis locais estáticas , principalmente em C. variável local, a alocação é estática (o tempo de vida é a execução do programa inteiro), não automática, mas é apenas no escopo durante a execução da função.
Em linguagens de programação específicas
C, C ++
( Variáveis automáticas chamadas .)
Todas as variáveis declaradas em um bloco de código são automáticas por padrão. Uma variável automática não inicializada tem um valor indefinido até que seja atribuído um valor válido de seu tipo.
Em C, usar a classe de armazenamento register é uma dica para o compilador armazenar a variável em um registro do processador. Além de não permitir que o operador de referência ( & ) seja usado na variável ou em qualquer um de seus subcomponentes, o compilador está livre para ignorar a dica.
Em C ++, o construtor de variáveis automáticas é chamado quando a execução atinge o local de declaração. O destruidor é chamado quando atinge o final de um determinado bloco de programa (os blocos de programa estão entre colchetes). Esse recurso é frequentemente usado para gerenciar a alocação e desalocação de recursos, como abrir e fechar arquivos automaticamente ou liberar memória. Consulte Aquisição de recursos é inicialização (RAII). Observe que o C ++ 11 possui um novo auto especificador, que é diferente. Nesse caso, o tipo da variável é inferido .
Java
(Chamadas de variáveis locais .)
Semelhante a C e C ++, mas não há nenhuma palavra-chave auto ou register . No entanto, o compilador Java não permitirá o uso de uma variável local não explicitamente inicializada e apresentará um erro de compilação (ao contrário de C e C ++, onde o compilador normalmente fornecerá apenas um aviso). O padrão Java exige que todas as variáveis locais sejam explicitamente inicializadas antes de serem usadas. Isso difere das variáveis de instância, que são inicializadas implicitamente com valores padrão (que são 0 para números e nulo para objetos).
Perl
(Chamadas de variáveis lexicais , my ou private .)
Em Perl, as variáveis locais são declaradas usando o my operador. Os escalares não inicializados terão o valor undef ; arrays ou hashes não inicializados serão () .
Perl também tem um local operador que não cria variáveis automáticas, em vez de dar às variáveis globais (pacote) um valor temporário, cujo escopo é dinamicamente definido para o bloco envolvente. Quando o escopo da variável é deixado, o valor antigo é restaurado.
Veja também
- Sintaxe C # Especificadores de classe de armazenamento
- Matriz de comprimento variável ( novo recurso C99 )
- Pilha de chamadas
- Vida útil do objeto