C - Regras de Escopo
Um escopo em qualquer programação é uma região do programa onde uma variável definida pode ter sua existência e além dessa variável ela não pode ser acessada. Existem três lugares onde as variáveis podem ser declaradas na linguagem de programação C -
-
Dentro de uma função ou bloco chamado local variáveis.
-
Fora de todas as funções que são chamadas de global variáveis.
-
Na definição de parâmetros de função que são chamados de formais parâmetros.
Vamos entender o que são locais e global variáveis e formais parâmetros.
Variáveis locais
Variáveis declaradas dentro de uma função ou bloco são chamadas de variáveis locais. Eles podem ser usados apenas por instruções que estão dentro dessa função ou bloco de código. Variáveis locais não são conhecidas por funções fora das suas próprias. O exemplo a seguir mostra como as variáveis locais são usadas. Aqui todas as variáveis a, b e c são locais para a função main().
Demonstração ao vivo
#include <stdio.h> int main () { /* local variable declaration */ int a, b; int c; /* actual initialization */ a = 10; b = 20; c = a + b; printf ("value of a = %d, b = %d and c = %d\n", a, b, c); return 0; }
Variáveis Globais
As variáveis globais são definidas fora de uma função, geralmente no topo do programa. As variáveis globais mantêm seus valores durante toda a vida útil do programa e podem ser acessadas dentro de qualquer uma das funções definidas para o programa.
Uma variável global pode ser acessada por qualquer função. Ou seja, uma variável global está disponível para uso em todo o programa após sua declaração. O programa a seguir mostra como as variáveis globais são usadas em um programa.
Demonstração ao vivo
#include <stdio.h> /* global variable declaration */ int g; int main () { /* local variable declaration */ int a, b; /* actual initialization */ a = 10; b = 20; g = a + b; printf ("value of a = %d, b = %d and g = %d\n", a, b, g); return 0; }
Um programa pode ter o mesmo nome para variáveis locais e globais, mas o valor da variável local dentro de uma função terá preferência. Aqui está um exemplo -
Demonstração ao vivo
#include <stdio.h> /* global variable declaration */ int g = 20; int main () { /* local variable declaration */ int g = 10; printf ("value of g = %d\n", g); return 0; }
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
value of g = 10
Parâmetros formais
Parâmetros formais são tratados como variáveis locais dentro de uma função e têm precedência sobre variáveis globais. Segue um exemplo -
Demonstração ao vivo
#include <stdio.h> /* global variable declaration */ int a = 20; int main () { /* local variable declaration in main function */ int a = 10; int b = 20; int c = 0; printf ("value of a in main() = %d\n", a); c = sum( a, b); printf ("value of c in main() = %d\n", c); return 0; } /* function to add two integers */ int sum(int a, int b) { printf ("value of a in sum() = %d\n", a); printf ("value of b in sum() = %d\n", b); return a + b; }
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
value of a in main() = 10 value of a in sum() = 10 value of b in sum() = 20 value of c in main() = 30
Inicializando variáveis locais e globais
Quando uma variável local é definida, ela não é inicializada pelo sistema, você mesmo deve inicializá-la. As variáveis globais são inicializadas automaticamente pelo sistema quando você as define da seguinte forma −
Tipo de dados | Valor padrão inicial |
---|---|
int | 0 |
caractere | '\0' |
flutuar | 0 |
duplo | 0 |
ponteiro | NULO |
É uma boa prática de programação inicializar as variáveis corretamente, caso contrário, seu programa pode produzir resultados inesperados, porque as variáveis não inicializadas receberão algum valor lixo já disponível em seu local de memória.
Linguagem C
- Regras do circuito da série
- Regras do circuito paralelo
- Regras para derivados
- Regras para antiderivados
- Variáveis C# e tipos de dados (primitivos)
- Escopo da variável C#
- Variáveis, literais e constantes de C++
- Variáveis C, Constantes e Literais
- Classe de armazenamento C
- Variáveis e literais Java