next up previous contents
Next: Tipos Compostos Up: Particularidades de C++ Previous: Entrada e Saída   Sumário

Definição de variáveis

Assim como em C, variáveis globais e estáticas em C ++ são automaticamente inicializadas para o valor 0 quando declaradas caso um valor diferente não seja especificado. Variáveis automáticas, que são declaradas dentro do escopo de uma função, não são inicializadas pelo sistema, e receberão o valor que (por acaso) esteja na posição de memória correspondente àquela variável -- em outras palavras, recebe ``lixo''. O próximo exemplo ilustra estas diferenças.

indentation

#include $<$iostream.h$>$

int index;

main()
{
int stuff;
int &another_stuff = stuff; // A synonym for stuff

stuff = index + 14; //index was initialized to zero
cout $\ll$ "stuff has the value " $\ll$ stuff $\ll$ begintex2html_wrap_inline$$n";
stuff = 17;
cout $\ll$ "another_stuff has the value " $\ll$ another_stuff $\ll$ begintex2html_wrap_inline$$n";

int more_stuff = 13; //not automatically initialized

cout $\ll$ "more_stuff has the value " $\ll$ more_stuff $\ll$ begintex2html_wrap_inline$$n";

for (int count = 3;count $<$ 8;count++) {
cout $\ll$ "count has the value " $\ll$ count $\ll$ begintex2html_wrap_inline$$n";
char count2 = count + 65;
cout $\ll$ "count2 has the value " $\ll$ count2 $\ll$ begintex2html_wrap_inline$$n";
}

static unsigned goofy; //automatically initialized to zero

cout $\ll$ "goofy has the value " $\ll$ goofy $\ll$ begintex2html_wrap_inline$$n";
}
O resultado da execução deste programa seria
     stuff has the value 14
     another_stuff has the value 17
     more_stuff has the value 13
     count has the value 3
     count2 has the value D
     count has the value 4
     count2 has the value E
     count has the value 5
     count2 has the value F
     count has the value 6
     count2 has the value G
     count has the value 7
     count2 has the value H
     goofy has the value 0

Observe o uso do símbolo & neste exemplo. Neste caso, another_stuff é definido como uma variável de referência, o que é também uma particularidade de C ++.

A variável de referência não é usualmente usada neste contexto; o objetivo neste caso é apenas de ilustrar sua funcionalidade. Esta variável não funciona exatamente como as outras variáveis porque ela funciona como se fosse um apontador derreferenciado. Seguindo sua inicialização, a variável de referência se torna um sinônimo para a variável stuff; mudanças no valor de stuff se refletirão no valor de another_stuff, pois efetivamente elas se referem ambas para a mesma variável. O sinônimo pode ser usado para acessar a variável para qualquer propósito legal da linguagem.

Deve-se observar que a variável de referência deve ser inicializada para referenciar outra variável quando ela é declarada; caso contrário, o compilador deve acusar um erro. Após a inicialização, a variável de referência não pode ser modificada para indicar uma variável diferente.

No contexto em que foi mostrado neste exemplo, o uso de variáveis de referência pode levar à confusão de código. Entretanto, mais adiante serão apresentados casos onde seu uso leva, de fato, a codificação mais clara e elegante.

O exemplo anterior também ilustra uma outra característica de C ++, a possibilidade de se definir variáveis (como more_stuff e goofy) no meio de uma função. Em C, todas variáveis de uma função deviam ser definidas antes do primeiro comando; em C ++, variáveis podem ser definidas mais próximas dos pontos onde elas serão efetivamente utilizadas. Tais variáveis têm escopo a partir do ponto onde são declaradas até o final do bloco onde foram definidas.

Observe também neste exemplo o uso desta característica no comando de laço for: a variável count é definida no apenas no início do laço, no ponto onde ela será utilizada. Neste caso, como esta variável foi definida fora do bloco do laço, seu escopo permanece até o fim da função (fim do bloco onde foi definida). Já a variável count2, definida dentro do bloco do laço, é liberada a cada fim de execução do laço e então realocada na próxima execução do laço (cinco vezes).


next up previous contents
Next: Tipos Compostos Up: Particularidades de C++ Previous: Entrada e Saída   Sumário
Ivan Luiz Marques Ricarte 2001-06-01