Você está na página 1de 6

17/03/2017

Programao Estruturada

- Ponteiros Parte 3 -

Prof. Ulysses Santos Sousa


ulyssessousa@ifma.edu.br

Aula 13

Roteiro

Ponteiros genricos
Ponteiros para estruturas
Indireo mltipla

1
17/03/2017

Ponteiros genricos
(void)
Ponteiros void
So ponteiros de propsito geral que pode
apontar para qualquer tipo de dado.

So utilizados em situaes em que seja


necessrio que uma funo receba ou retorne
um ponteiro genrico e opere independente
do tipo de dado apontado.

Ponteiros genricos
(void)
Declarao:
void *ptr;

Observaes:
o conceito de ponteiros void no tem nada a ver
com o tipo void para funes.
O contedo da varivel apontada por um ponteiro
void no pode ser acessado por meio desse
ponteiro.
necessrio criar outro ponteiro e fazer a
converso de tipo na atribuio. 4

2
17/03/2017

Ponteiros genricos
#include <stdio.h>

int main(){
int i = 5, *pi;
float f = 3.2, *pf;
void *pv;

pv = &i;
pi = (int *)pv; //o casting obrigatrio
printf(%d\n, *pi);

pv = &f;
pf = (float *)pv;
printf(%.2f\n, *pf);

system(pause);
return 0;
}

Ponteiros para
estruturas
Declarao:
struct Aluno *al;

Se a varivel al armazenar o endereo de


uma estrutura, podemos acessar seus
membros indiretamente.
Quando utilizamos ponteiros para estrutura no
podemos utilizar o operador . (ponto) para acessar os
membros da estrutura.

al.nome //ERRO 6

3
17/03/2017

Ponteiros para
estruturas
Formas de acessar os membros de uma
estrutura com ponteiros:

Essa uma expresso de visualizao complexa.


(*al).matricula; Os parnteses so necessrios, pois o operador
(.) tem precedncia sobre o operador (*).

Aqui, temos o uso do operador de acesso a


al -> matricula; membros (->), que opera sobre o endereo de
uma varivel estrutura.

Indireo Mltipla
(ponteiro para ponteiro)

Voc pode ter um ponteiro apontando para outro


ponteiro que aponta para o valor final.
Indireo Simples
Ponteiro Varivel

Endereo Valor

Indireo Mltipla
Ponteiro Ponteiro Varivel

Endereo Endereo Valor


8

4
17/03/2017

Indireo Mltipla
(ponteiro para ponteiro)

Observaes:
Uma varivel que um ponteiro para um
ponteiro deve ser declarada como tal. Isso
feito colocando-se um * adicional na frente do
nome da varivel.

Para acessar o valor final apontado


indiretamente por um ponteiro a um ponteiro,
devemos utilizar o operador * duas vezes.

Indireo Mltipla
(ponteiro para ponteiro)

#include <stdio.h>

int main(){
int x = 10, *p, **q;

p = &x;
q = &p;

printf(%d, **q);

system(pause);
return 0;
}

10

5
17/03/2017

Referncias

MIZRAHI, V. V. Treinamento em
Linguagem C. 2 Edio. So Paulo:
Person Prentice Hall, 2008.

SANTANNA, Solimara Ravani de. Lgica


de programao e automao. Curitiba:
Livro Tcnico, 2012. 144 p. ISBN
8563687340.

11

Você também pode gostar