Você está na página 1de 10

Fundamentos de Programao

Ponteiros
Prof. Arthur de Castro Callado

Universidade Federal do Cear - 2014.1
Varivel
Regio da memria que tem um tipo definido e
cujo valor pode ser alterado e/ou acessado
durante a execuo de um programa
Ponteiro
Varivel cujo valor representa o endereo de
outra varivel na memria

Aponta para uma regio da memria

Normalmente (por exemplo, em C), tem um
tipo definido, isto , aponta para uma varivel de
um tipo especfico
Declarao de Ponteiros (C)
<tipo> *<nome>;

Por exemplo, um ponteiro para varivel com a
idade de uma pessoa:
int *p_idade;
Uso de Ponteiros (C)
Ponteiros devem ser inicializados
Receber um endereo de memria para o
qual apontar

Ponteiros devem apontar para variveis ou
regies da memria previamente alocadas e que
continuaro alocadas enquanto o ponteiro for
necessrio

Aplicaes de Ponteiros
Alocao dinmica de memria
Com vetores, pode-se alocar somente a
quantidade de memria que necessria
Evita desperdcio e minimiza erros de acesso a
valores inexistentes

Manipulao de vetores e estruturas em
memria
Permite a criao de algoritmos que
percorrem uma estrutura de dados ou um
vetor (incluindo strings)

Aplicaes de Ponteiros
Passagem de parmetros por referncia
Permite chamar uma funo com um
parmetro altervel (que permanece alterado
aps o trmino da funo)
Retorno mltiplo de parmetros
Permite a uma funo retornar mais de um
valor
Ponteiro para funo: permite o uso de funes
de callback
Funo que chamada por um evento
Exemplos de Ponteiros (C)
#include <iostream>
using namespace std;
int main(void) {
float x, y; /* x e y sao variaveis reais */
float *p1, *p2; /* p1 e p2 sao ponteiros para variaveis reais,
*p1 e *p2 sao reais */
x = 2.5;
y = 0.8;
p1 = &x; /* p1 aponta para x */
y = *p1; /* y agora vale 2.5 */
*p1 = 1.0; /* x agora vale 1.0 */
*p1 = *p1 + 5.0; /* x agora vale 6.0 */
p2 = p1; /* p2 tambem aponta para x */
return(0);}
Parmetro Referenciado (C)
#include <iostream>
using namespace std;
int idoso(int idade, int *p_idoso) {
if(idade>=65) *p_idoso = 1;
else *p_idoso = 0;
return(*p_idoso);}

int main(void) {
int idade, e_idoso;
cout << digite a idade: << endl; cin >> idade;
idoso(idade, &e_idoso);
if(e_idoso) cout << Voce e idoso << endl;
else cout << Voce nao e idoso << endl;
return(0);}
Exerccio de Ponteiro (C)
Usando ponteiros com passagem por referncia,
faa uma nica funo para receber dois valores e
retornar a soma, o produto e a diferena desses
valores

Você também pode gostar