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!
