Вы находитесь на странице: 1из 27

P ROCESSAMENTO DE D ADOS II

Profa. Camila Bezerra

A GENDA

O que so ponteiros? Para que servem? Ponteiros e funes

QUE SO PONTEIROS ?

O nome de uma varivel indica o que est armazenada nela. O endereo de uma varivel um ponteiro.

Ponteiros proporcionam um modo de acesso varivel sem referenci-la diretamente.

PARA

QUE SERVEM ?

Fornecem maneiras com as quais as funes podem realmente modificar os argumentos que recebem.
Passar matrizes e strings mais convenientemente de uma funo para outra Manipular os elementos de matrizes mais facilmente.

Criar estruturas de dados complexas.


Alocar e desalocar memria dinamicamente Passar para uma funo o endereo de outra funo.

P ONTEIROS

VARIVEIS

um tipo especial de varivel, usada para conter o endereo de outra varivel. Um ponteiro varivel armazena um endereo de memria Dizemos que uma varivel aponta para outra varivel quando a primeira contm o endereo da segunda. TipoDado *Identificador;

P ONTEIROS

VARIVEIS

Exemplo:
int *p,*t,i; p = &i; t = p;

Como ponteiros so variveis, pode-se atribuir um ponteiro a outro do mesmo tipo.

E NDEREOS DE M EMRIA

A memria secundria dividida em bytes So numerados de 0 byte at o limite de memria.

O computador usa os endereos para localizar variveis


1 2 3 4 5

O PERADOR

DE ENDEREOS

Para conhecer o endereo ocupado por uma varivel usamos o operador de endereos &. Associado a uma varivel ele representa o endereo da varivel. O resultado da operao um ponteiro constante.

O PERADOR &
#include<stdio.h> #include<stdlib.h> Int main(){ int i,j; printf(Endereo de i = %p\n,&i); printf(Endereo de j = %p\n,&j); system(PAUSE); return 0;

O PERADOR *

unrio e opera sobre um endereo ou ponteiro. Como resultado temos o nome da varivel localizada nesse endereo. Em outras palavras resulta o valor da varivel apontada.

O operador de endereos & opera sobre o nome de uma varivel e resulta o seu endereo, j o operador indireto * opera sobre o endereo de uma varivel e resulta o seu nome.

ATRIBUIO

DE

P ONTEIROS

ATRIBUIO

DE

P ONTEIROS

O PERAO DE I NCREMENTO COM P ONTEIROS

Operao de incremento

Se incrementarmos um ponteiro int * ele anda 4 bytes. Esse deslocamento depende do tipo do ponteiro.

O PERAO DE I NCREMENTO COM P ONTEIROS

O PERAO DE I NCREMENTO COM P ONTEIROS

Ento como fariamos para incrementar o contedo da varivel apontada por um ponteiro?

(*p)++

O PERAO DE S OMA COM


PONTEIROS

O PERAO DE S OMA COM


PONTEIROS

Apenas operaes de soma e subtraes podem ser realizadas com ponteiros.

O PERAES COM P ONTEIROS

Exemplo 1 Exemplo 2 Exemplo 3

PASSANDO ARGUMENTOS POR


REFERNCIA COM PONTEIROS

Como fazer para que uma funo retorne mais de um valor para a funo chamadora? Passos:

A funo chamadora passa os endereos das suas variveis usando o operador de endereos, A funo chamada dever criar variveis(ou usar as de entrada) para armazenar os endereos que estiver recebendo, enviados pela funo chamadora.

E XEMPLO
void reajuste( float *preco, float *v_reajuste){ * v_reajuste = *preco * 0.2;

*preco = *preco * 1.2;


}

E XEMPLO
int main( ){ float val_preco,val_reaj;

printf(\n Insira o preo atual:);


scanf(%f,&val_preco); reajuste(&val_preco,&val_reaj); printf(O preo novo %f\n,val_preco); printf(O aumento foi de %f\n,val_reaj);

PASSAGEM

DE

VALORES

A linguagem C oferece duas maneiras de passar argumentos para uma funo:

Passagem por Valor: a funo chamada no poder alterar diretamente uma varivel da funo chamadora. Passagem por Referncia: a funo chamadora poder alterar diretamente uma varivel da funo chamadora

P ERMUTAO DE VALORES PASSAGEM POR VALOR


void troca(int x,int y){ int aux; aux=x; y=x; y=temp; }

Int main(){ troca(x,y); }

P ERMUTAO DE VALORES PASSAGEM POR R EFERNCIA


void troca(int *x,int *y){ int aux; aux=*x; *y=*x; *y=temp; }

Int main(){ troca(&x,&y); }

P ONTEIROS NO LUGAR DE M ATRIZES


O compilador transforma matrizes em ponteiros; O nome de uma matriz representa seu endereo da memria;

Esse endereo do primeiro elemento da matriz;


Ou seja, o nome de uma matriz um ponteiro que aponta para o primeiro elemento da matriz.

P ONTEIROS NO LUGAR DE M ATRIZES


Exemplo 7 Exemplo 8

Вам также может понравиться