Ponteiros e Arrays · 3 min read · Nov 18, 2025

Tutorial de Programação em C no Linux Parte 19: Ponteiros e Arrays

Até agora, nesta série de tutoriais de programação em C, discutimos brevemente os conceitos básicos de ponteiros. No entanto, existem vários outros conceitos relacionados a ponteiros que precisam ser discutidos. Portanto, neste tutorial, discutiremos o conceito de ponteiros e arrays.

Antes de começarmos com ponteiros e arrays, vamos rapidamente revisar o conceito básico de ponteiros. Ponteiros são um tipo especial de variável que pode armazenar endereços. Por exemplo, um ponteiro ‘ptr’ para um caractere pode ser declarado da seguinte forma:

char *ptr;

E você pode usar o sinal de e comercial para armazenar um endereço nele. Aqui está um exemplo:

char c = 'a';  
ptr = &c;

Então agora, o ponteiro ‘ptr’ contém o endereço da variável ‘c’. Alternativamente, você também pode dizer que ‘ptr’ agora aponta para a variável ‘c’.

Para acessar ou manipular o valor da variável apontada pelo ponteiro, você pode usar o operador *. Por exemplo, para mudar o valor da variável c de ‘a’ para ‘b’, você pode usar o ponteiro ‘ptr’ da seguinte forma:

*ptr = 'b';

O seguinte programa deve lhe dar uma ideia melhor sobre esses conceitos básicos de ponteiros que discutimos até agora:

#include   
  
int main()  
{  
 char c = 'a';  
 char *ptr = &c;  
   
 *ptr = 'b';  
   
 printf ("variável c = %c", c);  
  
 return 0;  
}

Aqui está a saída deste programa:

variável c = b

Então você pode ver que, usando um ponteiro, o valor de uma variável foi alterado.

Ponteiros e Arrays

À medida que você passar mais e mais tempo escrevendo e lendo código C, você observará que ponteiros e arrays são frequentemente usados juntos. Por exemplo, você pode acessar elementos individuais de um array usando um ponteiro. Considere o seguinte trecho de código:

...  
...  
...  
char arr[] = {'a','b','c','d','e'}  
char *ptr;  
ptr = &arr[0]  
...  
...  
...

Aqui, o ponteiro ‘ptr’ aponta para o primeiro elemento do array ‘arr’, que se você falar em termos de índices, está na posição zero do array. Agora, você pode usar o operador * com ‘ptr’ para acessar/manipular o valor que o ponteiro está apontando.

Seguindo em frente, uma vez que você tenha um ponteiro apontando para o primeiro elemento de um array, é fácil acessar outros elementos do array também. Por exemplo, se - no contexto do trecho de código acima - você usar a seguinte expressão em qualquer lugar:

*(ptr+1)

então isso permite que você acesse o segundo elemento do array, algo que você geralmente faz da seguinte maneira:

arr[1] 

Portanto, efetivamente, adicionar 1 a ‘ptr’ leva ao endereço do próximo elemento no array, e usando * você pode acessar o valor armazenado naquele endereço. Da mesma forma, adicionar 2 leva você ao terceiro elemento … assim por diante.

Aqui está um programa que deve lhe dar uma ideia mais clara sobre o que discutimos agora:

#include   
  
int main()  
{  
 char arr[] = {'a','b','c','d','e'};  
 char *ptr = &arr[0];  
   
 for(int i=0;i

E aqui está a saída:

arr[0] é a   
arr[1] é b   
arr[2] é c   
arr[3] é d   
arr[4] é e

Então você pode ver, a expressão ‘*(ptr+i)’ - com i variando de 0 até o último índice no array - nos permitiu acessar todos os elementos do array.

NOTA 1: O nome do array, quando usado no código, fornece o endereço base do array. Isso significa que o nome do array e o endereço de seu primeiro elemento são a mesma coisa. Portanto, no contexto de um array ‘arr’, ‘&arr[0]’ e ‘arr’ são a mesma coisa. Isso se estende a outros elementos também, significando que &arr[2] também pode ser escrito como (arr+2) e assim por diante.

NOTA 2: Estendendo o que discutimos na nota acima, cada representação de elemento de array pode ser decomposta em representação de ponteiro. Por exemplo: arr[2] é equivalente a ‘*(arr + 2)’.

NOTA 3: Embora você possa atribuir um endereço de array a um ponteiro, o inverso não é válido. Além disso, ao contrário dos ponteiros, você não pode usar os operadores ++ ou – com o nome do array. De forma ampla, você não pode mudar os endereços nos quais os elementos do array estão localizados originalmente.

Conclusão

Este tutorial se concentrou no conceito de ponteiros e arrays, como eles estão relacionados e como os elementos do array podem ser acessados através de ponteiros. No final, também discutimos alguns pontos importantes quando se trata de código que utiliza ponteiros para arrays.

Tente esses conceitos localmente em sua máquina para ter uma ideia melhor de como essas coisas funcionam e, em caso de dúvida ou consulta, deixe um comentário abaixo.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.