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

  1. Entender a aritmética de ponteiro
  2. Entender a comparação de ponteiro

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. O exemplo acima, agora, utilizando o que foi dito neste parágrafo, a aritmética de ponteiros pode ser vista abaixo:

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, os dados manipulados utilizando 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.

Operador Significado Exemplo
< Menor a < b
> Maior a > b
<= Menor ou igual a <= b
>= Maior ou igual a > b
== Igual a == b
!= Diferente a != b
Sintaxe
ponteiro1 == ponteiro2
ponteiro1 >= ponteiro2
ponteiro1 <= ponteiro2
ponteiro1 > ponteiro2
ponteiro1 < ponteiro2
ponteiro1 != ponteiro2

No exemplo abaixo, vamos comparar ponteiros com o objetivo de dectar 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. 11/03/2025 - revisão 3 - Correção em saída de Ex.1 e melhorias pontuais
  2. 07/10/2024 - revisão 2 - Sintaxe 'aritmética'; Adição de Ex. 2; Melhorias pontuais
  3. 29/09/2023 - revisão 1 - Correção em referências, erros gramaticais e exemplo 2
  4. 19/05/2023 - versão inicial