sábado, 6 de abril de 2013

Ponteiros


Cada vez estou com mais preguiça desse resumo. Maaaaas vamos lá. Ponteiros são variáveis que guardam o endereço de outras variáveis. TODA STRING, VETOR, MATRIZ É UM PONTEIRO, por isso não precisa do & (que indica endereço) antes do nome no scanf, por exemplo.
Declaração:

int i = 3, *ponteiro;
ponteiro = &i;

Pronto, meu ponteiro aponta pra variável i, ou seja, tem como conteúdo o endereço de i. Então eu posso acessar o conteúdo de i através do meu ponteiro:
printf ("%d", i) e printf ("%d", *ponteiro) nos dão o mesmo resultado: 3 na tela
Lembrando que se eu colocar printf (ponteiro) ele vai imprimir O ENDEREÇO, e não o conteúdo de i.

OBSERVAÇÃO IMPORTANTE: como um vetor é um ponteiro, se você colocar ptr = vetor (sem * mesmo, já que são variáveis de mesma natureza), o ptr vai apontar pro início do vetor, ou seja, para a posição 0.

Voltando. Coisa esquisita sobre ponteiros: você pode colocar um + 1 ou + alguma coisa nele. Ele vai pular o número de casinhas (que corresponderiam a variáveis) do tipo dele. Por exemplo, se eu tenho um ponteiro de int, se eu colocar ptr + 2 ele vai pular 2 ints a partir do que estava e apontar.
Ele escolhe pra onde apontar colocando & antes da variável que será apontada e pra pegar o valor dessa variável (depois de apontar, claro) a gente usa o *.

"Como eu estou com preguiça, aconselho ler o resumo do capítulo de ponteiros (página 199operações -, página 205ponteiros de ponteirose 206 - resumo geral - do PDF)." <- esse pedaço é antigo, vou achar o tal pdf e atualizar aqui.

Nenhum comentário:

Postar um comentário