Anda di halaman 1dari 14

Ponteiros

Ponteiro um recurso dos mais poderosos na linguagem C. E podemos dizer, tambm, que dos mais perigosos. Ponteiros permitem implementar estruturas de dados dinmicas, ou ainda otimizar acesso a dados. Erros decorrentes do mau uso de ponteiros podem ser catastrficos e tambm difceis de se detectar.(cuidado!!!

Ponteiros

Ponteiros s!o "ari#"eis endere%os de memria.

cu$os

"alores

s!o

Ent!o, ponteiros contm endere%os de memria, os quais por sua "ez, podem conter "alores de tipos di"ersos armazenados. &sos ' estruturas de dados dinmicas como

(istas ligadas, filas, pil)as, #r"ores.

*izemos que uma "ari#"el ponteiro referencia um "alor indiretamente, o que c)amamos de indire%!o.

Ponteiros
,

,ponteiro

Ponteiros
int -,ponteiro. a declara%!o acima especifica que ,ponteiro do tipo int - (ou se$a, ponteiro para um inteiro /uando - usado desta maneira numa defini%!o, ele indica que a "ari#"el sendo definida um ponteiro.

Ponteiros

, e0emplo de qualquer outra "ari#"el, os ponteiros de"em ser inicializados antes de serem usados. Ponteiros podem ser inicializados tanto na sua declara%!o, quanto posteriormente, por meio de uma atribui%!o. E0emplos1
,ponteiro 2 3&((. ,ponteiro 2 4. (equi"alente 5 anterior ,ponteiro 2 6,.

Ponteiros

7 operador 6, ou operador endere%o, um operador un#rio que retorna o endere%o de seu operando. 7 operador -, ou operador indire%!o, tambm um operador un#rio que retorna o "alor do ob$eto para o qual seu operando aponta. printf(89d:, -,ponteiro . no caso do e0emplo anterior, o comando acima imprimir# na tela o "alor +.

Ponteiros
,o usar o operador - desta forma, dizemos que estamos de;referenciando o ponteiro ,ponteiro.

Ponteiros

E0press<es e aritmtica de ponteiros

Ponteiros podem ser operandos em opera%<es aritmticas, atribui%<es e compara%<es. Porm nem todas estas fazem sentido. &m ponteiro pode ser incrementado ou decrementado

aptro==, aptro;;

Podemos adicionar ou subtrair um inteiro de um ponteiro. /uando isto feito, o ponteiro n!o simplesmente alterado pelo "alor do inteiro, mas sim por aquele inteiro "ezes o taman)o do ob$eto apontado.

Ponteiros

&m ponteiro pode ser atribudo a outro ponteiro se ambos ti"erem o mesmo tipo. >endo e0ce%!o o ponteiro "oid - que pode atribudo a qualquer tipo e um ponteiro de qualquer tipo pode ser atribudo a "oid -.
"oid - "Ptro. int -iPtro. "Ptro 2 iPtro. iPtro 2 "Ptro.

Ponteiros

?ela%!o entre ponteiros e arra@s

Ponteiros e arra@s s!o intimamente relacionados em C. &m arra@ pode ser pensado como um ponteiro constante. >upon)a que um "etor inteiro bA+B e uma "ari#"el ponteiro bPtro ten)am sido declarados. Podemos fazer
bPtro 2 b. ou ainda bPtro 2 6bA4B equi"alentemente

Ponteiros

7 elemento bACB poderia ser referenciado como -(bPtr =C 6bACB o endere%o do Do. elemento de b e isto tambm pode ser escrito bPtro = C Ponteiros tambm podem gan)ar ndices bPtroAEB refere;se ao elemento bAEB

Ponteiros

,rra@s de ponteiros

Fatrizes e "etores podem conter ponteiros. &m uso comum para isto seria formar "etores de cadeias de caracteres. Cada elemento no "etor um ponteiro para um "etor de caracteres.
c)ar -naipeADB 2 G87uros:,:Copas:,:Espadas:,:Paus:H Embora pare%a que cada cadeia este$a armazenada no "etor naipe, apenas ponteiros s!o armazenados na "erdade.

Ponteiros

Ponteiros

Anda mungkin juga menyukai