aula 148

Variáveis locais, globais e escopo de variáveis na linguagem de programação C

Trabalhando com funções e procedimentos veremos que é possível criar variáveis dentro da função main, dentro de qualquer função ou procedimento que criarmos, e ainda dentro do corpo do programa mas fora de qualquer função ou procedimento. Nesta aula vamos conhecer então os conceitos de variáveis locais, variáveis globais e escopo de variáveis na linguagem de programação C.

Observe o programa abaixo.

#include <stdio.h>
#include <stdlib.h>

int idade2 = 35;

void imprimir(int id){
    id++;
    idade2++;
}

int main() {

    int idade = 25;

    printf("\nIdade: %d\n", idade);
    printf("\nIdade2: %d\n", idade2);
    imprimir(idade);
    printf("\nIdade: %d\n", idade);
    printf("\nIdade2: %d\n", idade2);

    return 0;
}

O que são variáveis locais?

No programa acima há uma variável chamada idade que foi declarada dentro da função main. Dizemos que esta variável é local, pois apenas pode ser vista, manipulada, dentro da função main onde foi declarada. Por isso precisamos passar essa variável como parâmetro para o procedimento imprimir. Este procedimento não tem acesso à variável idade.

Quando passamos uma variável local como parâmetro para um função ou procedimento, é feito uma cópia do conteúdo da variável. Ou seja, nossa variável idade possui o conteúdo 25, ao passa-la como parâmetro para o procedimento imprimir, o valor 25 é copiado e colocado em outra região de memória que será acessada com o nome id, indicado no cabeçalho do procedimento imprimir.

É por isso que ao fazer o incremento (id++) dentro do procedimento imprimir, nossa variável idade na função main permanece com o valor 25. O incremento está sendo feito na cópia id.

O que são variáveis globais?

Existe também uma segunda variável chamada idade2 abaixo dos includes de nosso programa. Perceba que esta variável não está dentro de nenhuma função ou procedimento, mas ainda está dentro do corpo do nosso programa.

A variável idade2 é uma variável global. Isso significa que qualquer função ou procedimento do nosso programa pode acessar essa variável. O procedimento imprimir realiza um incremento na variável idade2 mesmo não recebendo esta variável como parâmetro. Esse incremento está sendo feito em uma variável global. Assim, quando seu valor for impresso na tela pela segunda vez na função main, após executar o procedimento imprimir, não será impresso 35, mas sim 36.

Existe apenas uma situação em que uma variável global é ocultada para alguma função ou procedimento e se torna inacessível, isso ocorre quando uma função ou procedimento possui uma variável local com o mesmo nome de uma variável global. Quando isso ocorre, só podemos acessar a variável local dentro da referida função ou procedimento. Caso seja necessário acessar também a variável global, então umas das duas precisa ter seu identificador alterado.

O que é escopo de variável?

Escopo é o nome dado à propriedade que determina onde exatamente cada variável é visível ou não em meu programa.

Em nosso programa acima, o escopo da variável idade é a função main, pois ela é uma variável local, isso implica que ela é visível apenas dentro desta função.

Em contrapartida, a variável idade2 possui escopo global pois, sendo uma variável global, ela não está diretamente relacionada com uma função ou procedimento específico, mas se relaciona com todo o programa, é visível em todo o programa.



Deixe um comentário

17 − oito =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.