5.3 Incremento e decremento de ponteiros
Um ponteiro avança/recua o tamanho do tipo de variável para cada unidade
de incremento/decremento. A diferença entre dois ponteiros diz a distância
entre bytes entre eles. A comparação entre ponteiros diz quem está mais a
direita.
Exemplo 5.3.1. Escreva um código que incremente/decremente ponteiros
para vetores de double e imprime os valores, endereços, diferenças, etc.
#include <stdio.h>
#include <math.h>
main (void)
{
double v[3]={1.1,2.2,3.3}, *pv=v,*pv2;
printf("O endereço do vetor v é %p\n",v);//hexadecimal
printf("O endereço do vetor v é %ld\n",(long int) v);//decimal
printf("O ponteiro *pv aponta para o endereço %p\n",pv);//hexadecimal
printf("O ponteiro *pv aponta para o endereço %ld\n",(long int) pv);//decimal
printf("O endereço de *pv é %ld\n",(long int) &pv);//decimal
printf("O valor apontado por *pv é %f\n",*pv);
pv++;
printf("O endereço de *pv é %ld\n",(long int) &pv);//decimal
printf("O ponteiro *pv aponta para o endereço %ld\n",(long int) pv);//decimal
printf("O valor apontado por *pv é %f\n",*pv);
printf("O ponteiro caminhou %ld bytes\n",sizeof(double));
pv2=pv+2;
printf("O valor apontado por *pv2 é %f\n",*pv2);
printf("A diferença entre pv2 e pv é %ld double\n",pv2-pv);
pv2--;
printf("O valor apontado por *pv2 é %f\n",*pv2);
if (pv2<pv) printf("pv2 está à esquerda de pv\n");
else printf("pv2 está à direita de pv\n");
}