Capiau 0 Denunciar post Postado Fevereiro 6, 2007 Tenho uma dúvida com relação ao incremento e decremento de ponteiros. Não consegui entender a diferença entre p++ e *(p++). O que encontrei na internet é que o primeiro incrementa o ponteiro para a posição de memória imediatamente superior, enquanto que o segundo, além de fazer a mesma coisa que p++, ele também "acessa" o valor da posição imediatamente superior a armazenada em p antes do incremento. O que quer dizer "acessa"? Qual a funcionalidade para isto?Também relacionado com a mesma dúvida, o que isto realmente faz: *(p+10) ? Eu sei que ele "acessa" o valor encontrado 10 posições a frente de p sem incrementar o apontador. Mais uma vez, o que quer dizer "acessa"? Compartilhar este post Link para o post Compartilhar em outros sites
alexandrehdk 0 Denunciar post Postado Fevereiro 6, 2007 Esse "acessa" quer dizer que você pode usar isso para fazer atribuições. Por exemplo, se declaroint *p;int t;se quero "acessar" o valor apontado por "p" e atribuir a t, faço:t = *p;Até aqui nada de novidade, só que o ponteiro *(p+1) aponta para um endereço de memória logo depois de *p, e se quiser fazer com que t receba o valor apontado por *(p+1), faço:t = *(p+1);se eu quero que p agora aponte para uma posição de memória logo depois da que está apontando, faço:*(p++);ou faço:p++;agora, se quero fazer com que p aponte para uma posição acima dele e logo em seguida atribua o valor apontado pelo novo endereço, faço:t = *(p++);espero ter esclarecido a questão Compartilhar este post Link para o post Compartilhar em outros sites
Capiau 0 Denunciar post Postado Fevereiro 7, 2007 Vlw pela sua explicação, alexandrehdk. Me ajudou muito a esclarecer minha dúvida. Pelo que entendi, não exíste muita diferença entre p++ e *(p++) quando estes são utilizados sozinhos, mas quando eu preciso atribuir um valor apontado por um ponteiro a uma variável, aí sim, eu utilizo o *(p++). Compartilhar este post Link para o post Compartilhar em outros sites