Qual é a diferença entre variáveis locais e globais?
Variáveis locais
Variáveis locais existem somente dentro de uma função, uma seção do código do programa que executa uma tarefa específica, na qual elas são definidas ou declaradas. Eles deixam de existir quando a função é executada. As variáveis locais são recriadas a cada vez que a função é chamada ou executada. Estas variáveis não são acessíveis para outras funções ou para o programa principal e, como tal, são geralmente implementadas usando um tipo especial de estrutura de dados, conhecido como stack.
Pilha
Em muitas linguagens de programação, a "pilha" é um elemento-chave na implementação de variáveis locais. Antes de executar uma função, um programa adiciona todas as variáveis locais declaradas nessa função à pilha, na ordem inversa em que foram declaradas. Quando o programa chama a função, as variáveis locais são removidas da pilha na ordem inversa, portanto, a variável adicionada mais recentemente é a primeira a ser excluída.
Variáveis globais
As variáveis globais são declaradas no corpo principal do código-fonte do programa, fora de todas as funções e, portanto, existem em qualquer parte do código, mesmo dentro das funções. Variáveis globais não são recriadas toda vez que uma função específica é chamada. Os programas geralmente usam variáveis globais para armazenar dados que são processados por muitas funções diferentes. Um programa simples de edição de texto, por exemplo, pode carregar o conteúdo do arquivo no qual você está trabalhando em uma variável global.
Vantagens e desvantagens
Variáveis locais facilitam a depuração e a manutenção de programas de computador. Os programadores podem determinar o ponto exato no qual um programa modifica o valor de uma variável local, enquanto as variáveis globais podem ser modificadas em qualquer lugar dentro do código-fonte. Variáveis locais também produzem menos interações inesperadas com chamadas a funções, ou o mundo externo, conhecido como efeitos colaterais, do que variáveis globais. As variáveis globais são acessíveis em funções nas quais não são utilizadas, em contradição com o conceito de programação modular, em que o código do programa consiste em blocos ou pequenos módulos isolados, para que os programadores favoreçam a estrutura modular rara eles os usam