Menu
Coddy logo textTech

Ponteiros e Arrays

Parte da seção Lógica & Fluxo do Journey de C++ da Coddy — lição 5 de 56.

Arrays e ponteiros têm uma relação especial em C++. Quando você declara um array, o nome do array na verdade age como um ponteiro para o primeiro elemento desse array. Essa conexão permite que você use ponteiros para trabalhar com arrays de maneiras poderosas.

Considere esta declaração de array:

int numbers[5] = {10, 20, 30, 40, 50};
int* ptr = numbers;  // ptr agora aponta para numbers[0]

Aqui, numbers é equivalente a &numbers[0] - ambos fornecem o endereço do primeiro elemento. O ponteiro ptr agora aponta para o mesmo local.

Uma vez que você tenha um ponteiro para um array, você pode usar aritmética de ponteiros para navegar pelos elementos. Adicionar 1 a um ponteiro o move para o próximo elemento do mesmo tipo:

ptr++;        // Agora aponta para numbers[1]
ptr = ptr + 2; // Agora aponta para numbers[3]

Você pode desreferenciar o ponteiro em qualquer posição para acessar o valor: *ptr fornece o valor na posição atual, e *(ptr + 1) fornece o valor do próximo elemento.

Esta relação entre ponteiro e array permite que você itere por arrays usando ponteiros em vez de loops tradicionais baseados em índices, oferecendo uma abordagem alternativa para percorrer arrays.

challenge icon

Desafio

Fácil

Crie um programa que use um ponteiro para iterar através de um array e imprimir cada elemento, demonstrando a relação entre ponteiros e arrays.

Você recebeu o seguinte array:

int values[6] = {15, 23, 8, 42, 17, 31};

Seu programa deve:

  1. Criar um ponteiro chamado ptr que aponta para o primeiro elemento do array values
  2. Usar aritmética de ponteiros para iterar por todos os 6 elementos do array
  3. Imprimir cada elemento desreferenciando o ponteiro em cada posição
  4. Mover o ponteiro para o próximo elemento usando aritmética de ponteiros (incrementar o ponteiro)

Imprima cada elemento em uma linha separada no seguinte formato:

Element: [value]

A saída deve mostrar todos os 6 elementos na ordem em que aparecem no array, acessados através da desreferenciação de ponteiro em vez da indexação de array.

Folha de consulta

Nomes de arrays atuam como ponteiros para o primeiro elemento. Você pode atribuir o nome de um array diretamente a um ponteiro:

int numbers[5] = {10, 20, 30, 40, 50};
int* ptr = numbers;  // ptr aponta para numbers[0]

Use aritmética de ponteiros para navegar pelos elementos do array:

ptr++;        // Move para o próximo elemento
ptr = ptr + 2; // Move para frente em 2 elementos

Desreferencie o ponteiro para acessar os valores:

*ptr          // Valor do elemento atual
*(ptr + 1)    // Valor do próximo elemento

Isso permite o percurso de array baseado em ponteiros como uma alternativa aos loops baseados em índices.

Experimente você mesmo

#include <iostream>
using namespace std;

int main() {
    // Array fornecido
    int values[6] = {15, 23, 8, 42, 17, 31};
    
    // TODO: Crie um ponteiro chamado 'ptr' que aponte para o primeiro elemento do array
    
    // TODO: Use um loop para iterar por todos os 6 elementos usando aritmética de ponteiros
    // TODO: Imprima cada elemento desreferenciando o ponteiro
    // TODO: Mova o ponteiro para o próximo elemento usando aritmética de ponteiros
    
    return 0;
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo