
A palavra reservada do C auto serve para dizer que uma variável é local. Mas não precisaremos usá- la pois as variáveis declaradas dentro de um bloco já são consideradas locais.
Abaixo vemos um exemplo de variáveis locais:
func1 (...)
{
int abc,x;
...
}
func (...)
{
int abc;
...
}
main ()
{
int a,x,y;
for (...)
{
float a,b,c;
...
}
...
}
No programa acima temos três funções. As variáveis
locais de cada uma delas não irão interferir com as variáveis
locais de outras funções. Assim, a variável abc
de func1() não tem nada a ver (e pode ser tratada independentemente)
com a variável abc de func2(). A variável x
de func1() é também completamente independente da
variável x de main(). As variáveis a,
b e c são locais ao bloco for.
Isto quer dizer que só são conhecidas dentro deste bloco
for e são desconhecidas no resto
da função main(). Quando usarmos a variável
a dentro do bloco for estaremos usando
a variável a local ao for
en não a variável a da função main().
int z,k;
func1 (...)
{
int x,y;
...
}
func2 (...)
{
int x,y,z;
...
z=10;
...
}
main ()
{
int count;
...
}
No exemplo acima as variáveis z e k são globais.
Veja que func2() tem uma variável local chamada z.
Quando temos então, em func2(), o comando z=10 quem
recebe o valor de 10 é a variável local, não
afetando o valor da variável global z.
Evite ao máximo o uso de variáveis globais. Elas ocupam memória o tempo todo (as locais só ocupam memória enquanto estão sendo usadas) e tornam o programa mais difícil de ser entendido e menos geral.
Veja como você está.
#include <stdio.h>
int num;
int func(int a, int b)
{
a = (a+b)/2; /* Qual e o valor de a apos a atribuicao? */
num -= a;
return a;
}
main()
{
int first = 0, sec = 50;
num = 10;
num += func(first, sec); /* Qual e o valor de num, first e sec */
/* antes e depois da atribuicao? */
printf("\n\nConfira! num = %d\tfirst = %d\tsec = %d",num, first, sec);
}
Perguntas para a lista do
Curso de C