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.

2.1 Operações com Ponteiros

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:

Apó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.

2.3 Deslocamento em Memória

O incremento de um ponteiro não adiciona apenas 1 ao endereço.

Ele adiciona: o tamanho, em bytes, do tipo apontado