Você está na página 1de 5

Ponteiros O ponteiro nada mais do que uma varivel que guarda o endereo de uma outra varivel.

. A declarao de ponteiros feita da seguinte forma:

A instruo acima indica que pa um ponteiro do tipo int. Agora veremos como atribuir valor ao ponteiro declarado. Para isto necessrio saber que existem dois operadores unitrios que so utilizados com os ponteiros. O primeiro o operador (*) atravs dele possvel retornar o valor da varivel que est localizada no ponteiro. E o segundo o operador (&) que retorna o endereo de memria que est localizado o valor da variavel contida no ponteiro. Portanto para atribuirmos um valor para o ponteiro necessrio referencia o valor da varivel que se encontra no ponteiro utilizando o operador (*), como ser demonstrado a seguir.

Desta forma estamos atribuindo o valor 24 para a varivel que est contida no ponteiro. Para entender melhor quando e como utilizar os operadores (*) e (&), veja o programa mostrado abaixo.

Sada do programa:

Quando os ponteiros so declarados, eles so inicializados com um endereo no valido, portanto antes de usa-los necessrio atribuir um endereo e isso feito atravs do operador (&) como demonstra a instruo pa=&a e pb=&b que atribui aos ponteiros pa e pb o endereo das varieis a e b. Uma outra novidade do programa anterior quando queremos imprimir o endereo do prprio ponteiro isto feito referenciando pa normalmente. Porm para imprimir o endereo contido no ponteiro usado &pa e por ultimo para imprimir o valor do endereo contido no ponteiro usamos *pa. Atravs do programa abaixo possvel verificar que se pode fazer comparaes entre ponteiros.

Sada do programa:

A comparao entre ponteiros em uma expresso relacional (>=,<=,> e <) possvel quando os dois ponteiros so do mesmo tipo. Isso feito no programa mostrado atravs da linha if (px1>px2), Caso a instruo seja verdadeira ser feita a diferena entre os dois ponteiros px1-px2. E caso seja falso ser feito ao contrario px2-px1. importante dizer que os dados de sada deste programa no so iguais em todos os computadores, depende muito da memria disponvel. Mas como pode-se observar em nosso exemplo, se px1=1245064 e px2=1245060 ento px1-px2 ser igual a um. Isso ocorre, pois a diferena depende da unidade tipo apontado. Para entender melhor, veja alguns casos de operaes com ponteiros. Se um ponteiro do tipo inteiro px1 fosse igual a 150 e que os inteiros possuem dois bytes. As operaes que se podem fazer so as seguintes: Incrementar o ponteiro atravs da expresso:

Isso far com que o ponteiro aponte para a posio do prximo elemento. Como estamos a considerar que o tipo inteiro do tamanho de 2 bytes, o ponteiro est sendo incrementado de 2, ou seja, o nmero de incrementos depende do tamanho do tipo de dados. O mesmo acontece com o decremento, porm aponta para a posio anterior. Isso feito pela instruo: Isso far com que o ponteiro aponte para a posio do prximo elemento. Como estamos a considerar que o tipo inteiro do tamanho de 2 bytes, o ponteiro est sendo incrementado de 2, ou seja, o nmero de incrementos depende do tamanho do tipo de dados. O mesmo acontece com o decremento, porm aponta para a posio anterior. Isso feito pela instruo:

Uma outra opo somar ou diminuir inteiros ao ponteiro:

Dessa forma o ponteiro ir apontar para o quinto elemento do tipo px1 adiante do elemento que o ponteiro estava a apontar. importante saber que no se pode nem multiplicar e nem dividir ponteiros.

Do mesmo modo que se tem um ponteiro (que o endereo de uma varivel) pode-se ter ponteiro para ponteiro, ou seja, um ponteiro aponta para um outro ponteiro que finalmente aponta para a varivel com o valor a ser utilizado. O que chamamos de indireo mltipla e pode ser vista no prximo programa.

Dados de sada:

Como visto no cdigo fonte anterior, uma varivel que ponteiro para ponteiro deve ser declarada da seguinte forma:

Da mesma forma para acessar o valor final utilizado o operador * duas vezes, conforme visto no neste exemplo. Concluso Neste artigo vimos que um ponteiro uma varivel que guarda um endereo de uma outra varivel. Estudamos como declara-las e que antes de utiliza-las necessrio atribuir um endereo vlido. Foi visto tambm que podemos utilizar ponteiros para ponteiros. Tudo isto foi mostrado com

exemplos simples e didticos. Conclui-se, no entanto que o uso de ponteiro importante em muitos casos e que se deve tomar muito cuidado ao usa-los. Nos prximos artigos sero estudadas algumas situaes em que ponteiros so muito teis. Como por exemplo: o uso de ponteiros para mudar os argumentos das funes e as alocaes dinmicas.

Você também pode gostar