Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PONTEIROS
Endereos de Memria
J dissemos vrias vezes que as variveis ficam armazenadas em determinados
espaos na memria do computador. Ao trabalhar com uma varivel, geralmente no precisamos
nos preocupar com o endereo desta varivel, pois o compilador cuida destes detalhes tcnicos.
Entretanto, pode ser bastante til saber o endereo de uma varivel. Em C, utilizamos
o operador de endereo & para acessar o endereo que uma varivel ocupa na memria. Sua
sintaxe muito simples, bastando inserir o operador & na frente do nome de uma varivel:
&x;
&nome;
O programa abaixo cria uma varivel inteira e utiliza printf para exibir o valor da
varivel e depois o seu endereo - utilizando o operador &.
...
2293620
124
2293621
...
Sada:
Ponteiros
Em linguagem de programao, chamamos de ponteiros as variveis especiais que
armazenam endereos de memria. Como j vimos, as variveis possuem trs atributos bsicos:
seu nome,
Declarando Ponteiros
A declarao de ponteiros bem parecido com a declarao de variveis. Assim como
uma varivel comum, ponteiros precisam ter tipos (como int, float, char) para indicar ao compilador
qual o tipo de valor para o qual o ponteiro aponta. Alm disso, utilizamos o asterisco * antes do
nome, para indicar ao compilador que estamos declarando um ponteiro e no uma varivel
simples. A sintaxe da declarao de um ponteiro vista abaixo:
int
*x;
char *c;
float *media;
Aps declarar um ponteiro, importante atribuir o endereo que ser armazenado por
ele. Isto feito utilizando o operador & para obter o endereo de uma varivel. A atribuio feita
da mesma forma que atribuimos valores para uma varivel. Suponha que tenhamos, em um
programa qualquer, um ponteiro chamado referencia e uma varivel chamada valor. Caso
desejssemos que o ponteiro referencia armazenasse o endereo da varivel valor, faramos a
seguinte atribuio:
referencia = &valor;
Desreferenciando um Ponteiro
Desferenciar um ponteiro nada mais do que acessar o valor que est armazenado
no endereo de memria armazenado por ele. Esta operao feita pelo operador * (que
chamamos formalmente de asterisco de indireo). Assim como utilizamos o operador de
endereo & para acessar o endereo de uma varivel, utilizamos o asterisco de indireo para
obter o valor que est dentro da posio de memria guardada pela ponteiro. Para utiliz-lo basta
adicionar o * antes do nome de um ponteiro em qualquer operao ou comando dentro um
programa:
int i = *p;
Sada:
Esta operao til para acessar e modificar valores dentro de posies de memria.
Um ponteiro com o asterisco de indireo se comporta como uma varivel comum. Podemos
utiliz-lo em comandos, expresses, atribuies e onde mais for necessrio.
Exerccios: