Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Aritmética de ponteiro
  2. Comparar ponteiros
  3. imagens ilustrativas

Como o tipo ponteiro armazena um endereço de memória, podemos realizar operações aritméticas de incremento e decremento utilizando os operadores (+), (-), (++) e (--).

Internamente, os cálculos aritméticos de endereços de memória são baseados no tamanho em que cada tipo de dado armazena. Os tipos de dados e seus tamanho foram estudado em C: Tipos de Dados.

Abaixo, as sintaxes mostram a forma básica de aplicação de operadores aritméticos para incremento e decremento.

Sintaxe
nome_ponteiro--;
nome_ponteiro++;
*(nome_ponteiro + N)
*(nome_ponteiro - N)
Onde
N: quantidade de posições para avançar
Exemplo 1
#include <stdio.h>
int main ()
{
    int vetor[3] = {1,2,3};
    int *pnt = &vetor[0];
    
    printf("%d \n",*pnt++);
    printf("%d \n",*pnt++);
    printf("%d \n\n",*pnt++);
    
    pnt = &vetor[0];
    
    printf("%d \n",*(pnt+0));
    printf("%d \n",*(pnt+1));
    printf("%d \n",*(pnt+2));
}
Saída
1
2
3
1
2
3

O tipo de dado vetor é um tipo referenciado também, sendo assim, vetor[0] significa o ponteiro para seu primeiro elemento. No exemplo 2 abaixo, mostra o exemplo 1 a aritmética de ponteiros:

Exemplo 2
#include <stdio.h>
int main ()
{
    //              0  1  2
    int vetor[3] = {1, 2, 3};
     
    printf("%d\n", vetor[0] + 0);
    printf("%d\n", vetor[0] + 1);
    printf("%d\n", vetor[0] + 2);
}
Saída
1
2
3

É importante observar que como estamos trabalhando em baixo nível, incrementando ou decrementando ponteiro há risco de invasão de memória, o que pode gerar erros. Assim, a manipulação utilizando aritmética de ponteiros devem ser feito com muito cuidado.

O tipo ponteiro também pode ser utilizado em conjunto com os operadores C: Operadores Relacionais discutidos anteriormente. Assim, podemos utilizar ponteiros em comandos de C: Comandos de Decisão e C: Comandos de Repetição, por exemplo.

Tab. 1: Operadores
Operador Significado
< Menor
> Maior
<= Menor ou igual
>= Maior ou igual
== Igual
!= Diferente
Sintaxe
ponteiro1 operador ponteiro2

No exemplo abaixo, vamos comparar ponteiros com o objetivo de verificar um condição final para um loop utilizando o comando de repetição for:

Exemplo 3
#include <stdio.h>

int main () {

   int vetor[3] = {1,2,3};
   int *pnt;
   int *fim = &vetor[0] + 3; 
  
   int i;
   for(pnt=&vetor[0] ; pnt < fim ; pnt++) 
   {
      printf("%d\n",*pnt );
   }
}
Saída
1 
2 
3
  1. 04/09/2025 - revisão 5 - Ajustes: pontuais, objetivos e sintaxes
  2. 11/03/2025 - revisão 3 - Correção em saída de Ex.1 e melhorias pontuais
  3. 07/10/2024 - revisão 2 - Sintaxe 'aritmética'; Adição de Ex. 2; Melhorias pontuais
  4. 29/09/2023 - revisão 1 - Correção em referências, erros gramaticais e exemplo 2
  5. 19/05/2023 - versão inicial