Por: Eduardo Casavella
Chamamos de escopo de variável ao conjunto de regras que determinam a utilização de uma variável em um programa
Podemos dividir as variáveis quanto ao escopo em três tipos:
variáveis locais, parâmetros formais e variáveis globais.
Variáveis locais
- São aquelas declaradas dentro do bloco de uma função.
- Não podem ser usadas ou modificadas por outras funções.
- Somente existem enquanto a função onde foi declarada estiver sendo executada.
Parâmetros formais
- Os parâmetros formais de uma função também são variáveis locais da função.
Variáveis Globais
- São declaradas fora de todos os blocos de funções.
- São acessíveis em qualquer parte do programa, ou seja, podem ser usadas e modificadas por todas as- outras funções.
- Existem durante toda a execução do programa.
Escopo de variáveis
#include <stdio.h> #include <conio.h> //declaração de variáveis globais // ---------------- Funçao main()------------------- int main(void) { //declaração das variáveis locais da main() return(0); } // ------------------------------------------------- void funcao1(variáveis locais de parâmetros) { // declaração das variáveis locais da função1 return; }
//Exemplo de programa com variáveis globais e locais. #include<stdio.h> #include<conio.h> //declaração de variáveis globais float media, nota1, nota2; //protótipo da função entrada void entrada(void); // ---------------- funçao main()------------------- int main(void) { //variável local char resposta; do { //chamada da função p/ entrada das notas entrada(); //usando variáveis globais: media,nota1,nota2 media = (nota1 + nota2) / 2; printf("\nMedia do aluno: %.2f\n", media); printf("\nDeseja calcular outra media? (s/n)"); fflush(stdin); scanf("%c",&resposta); } while(resposta == 's'); return(0); } // --------- fim da função main() ----- //função entrada de dados //usa as variáveis globais nota1 e nota2 void entrada(void) { printf("\nDigite a primeira nota: "); scanf("%f", ¬a1); printf("Digite a segunda nota: "); scanf("%f", ¬a2); return; }
Tela de Execução
Perguntas frequentes:
Podem existir variáveis locais e globais com o mesmo nome?
Sim. Caso isto ocorra, as variáveis irão se comportar como variáveis diferentes, embora possuam o mesmo nome.
Nota: por uma questão de clareza na escrita do código, a prática de nomear variáveis globais e locais com o mesmo nome não é recomendada.
Supondo que exista uma variável local e uma global com o mesmo nome, qual prevalece?
Prevalece sempre a variável local.
As variáveis declaradas dentro da função main() são locais à mesma, pois embora seja uma função especial main não deixa de ser uma função. É muito comum programadores iniciantes confundirem as variáveis declaradas na main() com variáveis globais. Isto é um erro conceitual. Para ser global a variável tem que ser declarada fora do bloco de qualquer outra função, inclusive fora da main().
Até a proxima!