Menu
Coddy logo textTech

Operador de Desreferenciação

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

Agora que você consegue obter um ponteiro para uma variável, você precisa aprender como acessar e modificar o valor naquele endereço de memória. É aqui que o operador de desreferência (*) se torna essencial.

O operador de desreferência * é usado para acessar o valor armazenado no endereço de memória para o qual um ponteiro está apontando. Quando você coloca * antes de uma variável de ponteiro, ele "segue" o endereço e fornece o valor real armazenado lá.

int number = 42;
int* ptr = &number;  // ptr armazena o endereço de number
int value = *ptr;    // value agora contém 42

Você também pode usar o operador de desreferência para modificar a variável original através do ponteiro. Quando você atribui um novo valor a *ptr, você está na verdade alterando o valor armazenado naquele local da memória:

*ptr = 100;  // Altera number para 100
// number agora é 100, embora o tenhamos modificado através de ptr

Este acesso indireto é o que torna os ponteiros tão poderosos - você pode ler e modificar variáveis de qualquer lugar em seu programa, desde que tenha um ponteiro para elas.

challenge icon

Desafio

Fácil

Crie um programa que demonstre o operador de desreferência modificando o valor de uma variável por meio de um ponteiro.

A seguinte entrada será fornecida:

  • Um número inteiro representando o valor inicial de uma variável
  • Um número inteiro representando o novo valor a ser atribuído por meio do ponteiro

Seu programa deve:

  1. Declarar uma variável inteira chamada temperature e inicializá-la com o primeiro valor de entrada
  2. Criar um ponteiro chamado tempPtr que aponte para a variável temperature
  3. Imprimir o valor original desreferenciando o ponteiro
  4. Usar o operador de desreferência para alterar o valor de temperature para o segundo valor de entrada por meio do ponteiro
  5. Imprimir o novo valor desreferenciando o ponteiro novamente

Use o seguinte formato de saída exato:

Original value: [original value]
New value: [new value]

Folha de consulta

O operador de desreferência * é usado para acessar o valor armazenado no endereço de memória para o qual um ponteiro está apontando:

int number = 42;
int* ptr = &number;  // ptr armazena o endereço de number
int value = *ptr;    // value agora contém 42

Você também pode usar o operador de desreferência para modificar a variável original através do ponteiro:

*ptr = 100;  // Altera number para 100
// number agora é 100, embora o tenhamos modificado através de ptr

Este acesso indireto permite que você leia e modifique variáveis de qualquer lugar em seu programa, desde que você tenha um ponteiro para elas.

Experimente você mesmo

#include <iostream>
using namespace std;

int main() {
    // Ler valores de entrada
    int initialValue, newValue;
    cin >> initialValue;
    cin >> newValue;
    
    // TODO: Escreva seu código abaixo
    // 1. Declarar a variável temperature e inicializar com initialValue
    // 2. Criar o ponteiro tempPtr apontando para temperature
    // 3. Imprimir o valor original usando a desreferenciação do ponteiro
    // 4. Alterar o valor de temperature através do ponteiro usando newValue
    // 5. Imprimir o novo valor usando a desreferenciação do ponteiro
    
    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