next up previous contents
Next: Alocação Dinâmica Up: Apontadores Previous: Apontadores   Sumário

Revisão de apontadores

O programa abaixo ilustra um exemplo simples do uso de apontadores. O objetivo deste exemplo é simplesmente rever conceitos básicos relativos a apontadores.

indentation

#include $<$iostream.h$>$

main()
{
int $\ast$pt_int;
float $\ast$pt_float;
int pig = 7, dog = 27;
float x = 1.2345, y = 32.14;
void $\ast$general;

pt_int = &pig;
$\ast$pt_int += dog;
cout $\ll$ "Pig now has the value of " $\ll$ $\ast$pt_int $\ll$ begintex2html_wrap_inline$$n";
general = pt_int;

pt_float = &x;
y += 5 $\ast$ ($\ast$pt_float);
cout $\ll$ "y now has the value of " $\ll$ y $\ll$ begintex2html_wrap_inline$$n";
general = pt_float;

const char $\ast$name1 = "John"; // Value cannot be changed
char $\ast$const name2 = "John"; // Pointer cannot be changed
}

Como em ANSI-C, em C ++ um apontador é declarado através da presença de um asterisco (*) precedendo o nome da variável. O apontador então é um apontador para uma variável daquele tipo específico e não deve ser usado para variáveis de outros tipos.

O processo de obter o valor de uma variável através de um apontador é usualmente conhecido como derreferência. Como em ANSI-C, o modo de derreferenciar um apontador em C ++ é também através do uso do asterisco precedendo o nome do apontador.

O resultado da execução do programa deste exemplo deve ser

     Pig now has the value of 34
     y now has the value of 38.3125

A penúltima linha desta função ilustra a definição de um apontador para um valor constante, ou seja, o valor para qual o apontador name1 aponta não pode ser alterado. É também possível definir um apontador constante, o qual não pode ser alterado. Um exemplo deste caso, name2, é apresentado na linha seguinte do exemplo.

O uso destas duas construções pode suportar verificação adicional em tempo de compilação e ao mesmo tempo melhorar a qualidade de código. Caso você saiba que um apontador nunca será movido devido a sua natureza, você deve definí-lo como um apontador constante. Caso você saiba que um valor nunca será alterado, ele deve ser definido como constante, de forma que o compilador poderá avisar em caso de tentativas acidentais de mudanças em seu valor.

Este mesmo exemplo ainda ilustra o uso de apontadores para void, uma construção já adotada em ANSI-C mas ainda pouco usada. Um apontador para void pode receber o valor de qualquer outro tipo de apontador. No exemplo, o apontador general recebe primeiro um endereço de um tipo int e posteriormente de um tipo float. Esta construção permite que o programador use um apontador que pode apontar para muitos tipos diferentes a fim de transferir informação em um programa.


next up previous contents
Next: Alocação Dinâmica Up: Apontadores Previous: Apontadores   Sumário
Ivan Luiz Marques Ricarte 2001-06-01