ExpertiDict

C · Intermediário · Português · Técnico

aritmética de ponteiros

/a.ɾitʃˈmɛ.tʃi.kɐ dʒi põˈtej.ɾus/substantivo

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)); // 30

Exemplos

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.

Veja também

Todos os termos de C