C · Intermediário · Português · Técnico
aritmética de ponteiros
Soma ou subtração de inteiros em ponteiros, em que o deslocamento é multiplicado pelo tamanho do tipo apontado. Permite percorrer arrays sem usar índices.
Onde usar
Em p + 1, o endereço avança sizeof(*p) bytes, não 1 byte. É assim que v[i] funciona por baixo: v[i] equivale a *(v + i).
Em código
int v[3] = {10, 20, 30};
int *p = v;
p++; // avança um int
printf("%d\n", *p); // 20
printf("%d\n", *(v + 2)); // 30Exemplos
Com aritmética de ponteiros, p + 1 aponta para o próximo int.
Esse laço usa aritmética de ponteiros em vez de índice.
Cuidado
Ir além de um elemento depois do fim do array é comportamento indefinido, mesmo sem desreferenciar o resultado.