Além de armazenar endereços de memória e permitir o acesso ao conteúdo armazenado, os ponteiros também podem ser manipulados por meio de operações aritméticas.
Esse tipo de operação é conhecido como aritmética de ponteiros e permite percorrer regiões da memória de forma controlada.
Considere o seguinte exemplo:
#include <stdio.h>
int main() {
int a;
int *ptr;
ptr = &a;
*ptr = 5;
printf("%d e %p\n", *ptr, ptr);
ptr++;
printf("%d e %p\n", *ptr, ptr);
return 0;
}
Na primeira impressão:
printf("%d e %p\n", *ptr, ptr);
temos:
ptr → valor armazenado (5)ptr → endereço de memória de aApós a instrução:
ptr++;
o ponteiro é incrementado.
É importante destacar que:
Ou seja, o ponteiro passa a apontar para a próxima posição de memória compatível com o tipo int.
O incremento de um ponteiro não adiciona apenas 1 ao endereço.
Ele adiciona: o tamanho, em bytes, do tipo apontado