Pulse 0 Denunciar post Postado Maio 16, 2015 #include <stdio.h> void main () { int v[5], i, *p; p = v; // p armazena o endereço do primeiro elemento de v i = 0; while (i < 5) { *p = i; i++; p++; } for (i = 0; i < 5; i++) printf("%d ", v[i]); p = v; printf("\nO quinto elemento do vetor e: %d.", p[4]); printf("\nO quinto elemento do vetor e: %d.", *(p+4)); } Tava estudando esse código e não entendi. Sei que quando temos um array ele guarda o endereço da primeira posição (0), então como fizemos o ponteiro p guardar o valor desse endereço ele não deveria exibir o valor que está guardado na variável para a qual aponta apenas quando fosse usado o operador de desreferenciamento (*)? Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 16, 2015 Main não tem tipo de retorno void. É int. http://stackoverflow.com/questions/4622461/difference-between-pointer-index-and-pointer Compartilhar este post Link para o post Compartilhar em outros sites
guidjos 65 Denunciar post Postado Maio 16, 2015 A notação a[b] é equivalente a *(a + b). Curiosidade: como + é comutativo, *(a + b) é o mesmo que *(b + a), portanto seu código poderia dizer 4[p] e funcionar corretamente: http://codepad.org/bOEDViYa Compartilhar este post Link para o post Compartilhar em outros sites