Você está na página 1de 2

www.tiexpert.net Pág.

1 de 2

Variáveis Globais e Locais


Agora que aprendemos como criar funções, uma nova concepção deve estar em mente: A
diferença entre variáveis globais e locais.

Variáveis locais
Variáveis locais são aquelas nas quais apenas a função onde ela está pode usá-la. Por
exemplo, se declaramos int x dentro da função main, apenas a função main poderá utilizá-la
para guardar dados e nenhuma outra função poderá utilizar o int x da função main. Veja:
#include <iostream>
#include <cstdlib>
using namespace std;

int obterY (void) //criando a função


{
int y; //apenas a função obterY pode utilizar
y=10*5;
return y;
}

int main (void){


int valorDeY, x; // apenas a função MAIN pode utilizar
cout <<"digite o valor de X: ";
cin >> x;
cin.ignore ();
valorDeY=obterY();
cout <<"\nX="<<x<<"\tY="<<valorDeY<<"\n\n";
system ("pause");
}
Perceba que a variável x só pode ser utilizado por main e a variável y só pode ser utilizada por
obterY. Para conseguirmos utilizar o valor guardado em y na função obterY, tivemos que
retornar (por na saída da função) o valor de y (return y) e guardamos dentro de outra variável
que estava em main - valorDeY.

Variáveis globais
As variáveis globais são declaradas da mesma forma que uma variável local - primeiro o tipo,
depois o nome da variável. Mas a diferença é que esta variável é declarada fora de qualquer
função. Por convenção, geralmente, utilizamos um underline (_) no começo do nome da
variável para facilitar a leitura do programa e facilmente percebermos de que se trata de uma
variável global.
Variáveis globais podem ser utilizadas por qualquer função. E qualquer função pode alterar o
valor, utilizá-la em um processo ou até mesmo atribuir o valor que quiser.
#include <iostream>
#include <cstdlib>
using namespace std;

int _iniciado=0; //variável global começa em 0

void start (void){


_iniciado++;
}

int main (void){


start (); //chamando a função start
int x=0, opcao; // variáveis locais, apenas a função MAIN pode utilizar
x++;
cout <<"Este programa foi iniciado "<<_iniciado<<" vez(es)";

http://www.tiexpert.net/programacao/c/variaveis-globais-e-locais.php
www.tiexpert.net Pág. 2 de 2
cout <<"\nO valor de X e "<<x;
cout <<"\n\nDeseja reiniciar o programa?\n1.\t\tSIM\nOutro numero\tNAO\n";
cin >> opcao;
cin.ignore ();
if (opcao==1)
main (); //reiniciar o programa
return 0;
}
Perceba que a variável _iniciado está sendo usada nas duas funções - main e start. Toda vez
que a função start é chamada, é incrementado (somado) um a _iniciado. Prestemos atenção
no seguinte também, dentro da função main também tem uma variável chamada x que toda
vez que chamamos main deve ser incrementada (x++).
Então, por que apenas o valor de _iniciado muda e x continua sempre 1?
É aí que está a vantagem e também a desvantagem da variável global.
A variável global está constantemente na memória. O fato de reiniciar o programa ou não,
pouco importa, porque o valor de _iniciado nunca é reinicializado quando chamamos uma
função. A não ser que em algum lugar do programa nós especifiquemos isso.
Já as variáveis locais estão presas as funções. Cada vez que chamamos uma função, também
chamamos as variáveis dentro da função. Se finalizamos uma função, também finalizamos a
variável. Resumindo, se reiniciamos a função, também reiniciamos a variável daquela função.
A desvantagem da variável global é a dificuldade de lidar com ela. Devemos usar variáveis
globais apenas quando realmente necessário.
Porque, imagine usar uma variável global e dentro de nosso programa tem 10 ou mais
funções, todas elas utilizando a mesma variável global e alterando seu valor. Ao final de todas
as operações, dificilmente saberemos qual será seu resultado. Ou seja, isso dificultará a lógica
do nosso programa, deixando-o difícil de interpretar.

Autor: Denys William Xavier


Este artigo está sob Licença Creative Commons
Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nc-sa/2.5/br/
ou envie uma carta para Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.

http://www.tiexpert.net/programacao/c/variaveis-globais-e-locais.php

Você também pode gostar