Página 1 de 1

Variaveis

MensagemEnviado: 01 Dez 2006 07:55
por veioloko
Olá pessoal

Estou com uma dúvida

É melhor eu utilizar variaveis locais ou globais?

Que diferença isso faz no programa ....

Obrigado

Re: Variaveis

MensagemEnviado: 01 Dez 2006 08:00
por Rodrigo_P_A
veioloko escreveu:Olá pessoal

Estou com uma dúvida

É melhor eu utilizar variaveis locais ou globais?

Que diferença isso faz no programa ....

Obrigado



variáveis locais são destruidas ao sair da "função a qual ela pertence" , e não são acessíveis a outras funções

variáveis globais são acessíveis em qualquer parte do programa, e não perdem seu valor ao sairem ou entrarem em outra função.


espero que eu tenha conseguido explicar.

MensagemEnviado: 01 Dez 2006 08:08
por psycoman
esse link tem uma explicação legal.

http://ead1.eee.ufmg.br/cursos/C/aulas/c760.html


Pra mim deve-se evitar variaveis globais pos estas permanecem na memoria ate o fim do programa. :roll:

MensagemEnviado: 01 Dez 2006 08:35
por Paulo
A questão de se utilizar um tipo ou outro depende muito do que vc irá armazenar nessa variável, pois existe os prós e contras de cada tipo, mas caso vc necessite de uma variável apenas dentro da função, ou seja, vc não utilizará ela em outra função ou outro ponto do programa, a variável local é mais recomendada para esse caso, mas tem o problema que quando vc voltar para essa função, essa mesma variável será criada novamente, ou seja, vc perderá o valor que vc tinha anteriormente, mas para esse problema de perder o conteúdo da variável local ao retornar para função a solução é vc criar uma variável local mas do tipo static, isso faz com que ela possua todas características de uma variável local, mas com a diferença de não perder o seu conteúdo e de não ser destruída toda vez que a função terminar, mas ela continua sendo vista apenas dentro da função a que ela pertence, ou seja, os outros pontos do programa não tem acesso a ela.
As variáveis globais são aquelas que podem ser acessadas e utilizadas por qualquer trecho do programa e que não perdem seu conteúdo.

Espero ter ajudado.
Qq dúvida posta aí que a gnt tenta te ajudar.

Até +...
Paulo D.

MensagemEnviado: 01 Dez 2006 09:23
por brasilma
Fazendo uma analogia com os registradores em assembler, em termos de uso de memória, uma variável Global significa que um registrador seria utilizado apenas para uma função - guardar o valor de uma soma, por exemplo - ou seja, em todo o programa ele serviria apenas para isso.

Já uma variavel Local, seria como um registrador de uso geral, ora ele armazena um valor lido de um port, em outro instante a parcela de uma operação, outro um valor para ser escrito na memória.

MensagemEnviado: 01 Dez 2006 09:46
por andre_luis
As variáveis locais são a característica mais marcante do C, que é o gerenciamento automático da alocacao de memorias.

+++

MensagemEnviado: 01 Dez 2006 12:53
por Paulo
Concordo com o Andre...
As variáveis locais do C é um grande diferencial da linguagem, pois permite "redução de consumo da memória" e outras coisas mais, mas apesar de ser uma grande vantagem muitas pessoas deixam de usar por falta de conhecimento sobre seu funcionamento ou outros fatores.

Até +...
Paulo D.

MensagemEnviado: 01 Dez 2006 14:58
por veioloko
Olá!

Creio eu então que se por exemplo eu usar 3 variaveis locais ao invez de 1 variavel global eu estaria tendo mais linhas de codigo certo?

Ok entendi o uso das variaveis, era mais ou menos o que eu tinha em mente.

Qual o limite de variaveis em um programa?

Aproveitando.....
Por exemplo tenho uma rotina de interrupção auxiliar a cada 8ms (usando texas msc1200).
Dentro desta rotina coloco por exemplo:

Código: Selecionar todos
void AUXinterrupts(void) interrupt 6 using 3
{
char tmp; // variavel somente p/ limpar registros
   tmp = MSINT ;
   AI=0 ; // limpa flag de interrupção auxiliar

  if (aux_int_ms<101){
      if(aux_int_ms<=porcentagem){
         saida = 0; // ativa saida
      } else {
         saida = 1;// desativa saida
      }
   aux_int_ms++;
   }else{
   aux_int_ms = 1;   
   }
}


Essa é uma rotina de um "pwm" que fiz.... de 0 a 100 em porcentagem....a cada 8ms.

Ao compilar no ride ele da um warning dizendo que estou modificando registro estando dentor de uma interrupção e pode causar erros e algo do tipo....como faço para tirar esse warning?

Pois gravei o microcontrolador e tem hora que funciona e tem hora que não...rs

Achei que era um problema com as variaveis locais e globais mas acho que não.

Esse foi o erro:
Código: Selecionar todos
WARNING C233 IN LINE 470 OF teste.c : using absolute registers together with in
            -terrupts can cause register corruptions (mixup of register banks)

MensagemEnviado: 01 Dez 2006 16:09
por andre_luis
Retira o "using ___"

MensagemEnviado: 04 Dez 2006 06:06
por veioloko
Mas ao meu ver não posso tirar o using....pois ele determina qual interrupção auxiliar que é.....

Porque devo retirar? nao entendi...

o erro nao sumiu....mas o programa funcionou acho