[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: So mais uma duvida...
Paulo Eduardo A. Silveira writes:
> Entao professor, quando voce escreveu:
> ptr++;
> soh o vetor do ptr mudou, o els continuo no mesmo certo?
Um ponteiro, por exemplo
int *ptr;
que aponta para inteiros é uma variável que quarda o endereço de um inteiro.
Suponha que eu declaro
int v[100];
e então faço
ptr=&v[0];
O operador & devolve o endereco do objeto no qual ele está sendo aplicado,
neste exemplo, a variável v[0]. Assim, a atribuicao ptr=&v[0]; guarda em ptr
o endereco de v[0]. Posso agora fazer "aritmética com ponteiros", como por
exemplo
ptr=ptr+1;
(equivalentemente ptr++;) Isto faz com que ptr aponte para v[1]. Posso
tambem fazer
ptr=ptr+5;
que faz com que ptr aponte para v[5], etc. Posso tambem comparar:
if (ptr>v[4]) ...
Para saber o inteiro que está guardado no endereco apontado por ptr, eu aplico
o operador *, por exemplo, (se fiz antes int x;)
ptr=&v[0];
x=*ptr;
guarda na variavel x o valor de v[0].
Posso tambem fazer agora
*ptr=10;
que fara com que v[0] se torne 10.
> Sendo assim, voce PRECISA criar um ponteiro, porque senao voce nunca
> poderia escrever algo do tipo:
> els[0]->id = els[1]->id;
esta atribuicao faz sentido, desde que els aponte para um vetor de estruturas
que tem um campo chamado id.
> certo?
> Entao para fazer isso com um ponteiro, basta eu dar um ponteiro++ (supondo
> que ele esteja no vetor 0 e o els tambem) eu posso digitar:
> ptr++; //para passar ao proximo vetor
> els->id = ptr->id;
> Isso seria o mesmo que escrever o que esta la em cima, soh que aqui eu
> trabalho com ponteiro, e la eh um vetor de estrutura...
> Outra coisa, nesse caso do ponteiro, eu posso escrever ptr=5; para que ele
> aponto ao vetor 5 da estrutura? Alias, vai existir ptr=0 como em vetores
> ou comeca pelo ptr=1?
Ao inves de
ptr=5;
voce deve fazer
ptr=(&v[0]+5);
para ele apontar para v[5], por exemplo.
Boa sorte, Yoshi
PS Vejam capítulo 5 do Kernighan e Ritchie para estas coisas de ponteiros.
> FaloWWW
> Paulo
>
> -------------------------------------
> Paulo Eduardo A. Silveira
> Undergraduating in Computer Science
> University of Sao Paulo - IME
> http://www.linux.ime.usp.br/~peas
> -------------------------------------