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 42Você 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 ptrEste 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.
Desafio
FácilCrie 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:
- Declarar uma variável inteira chamada
temperaturee inicializá-la com o primeiro valor de entrada - Criar um ponteiro chamado
tempPtrque aponte para a variáveltemperature - Imprimir o valor original desreferenciando o ponteiro
- Usar o operador de desreferência para alterar o valor de
temperaturepara o segundo valor de entrada por meio do ponteiro - 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 42Você 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 ptrEste 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;
}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
1Ponteiros e Memória
O que é um Ponteiro?Operador de EndereçoOperador de DesreferenciaçãoPonteiros NulosPonteiros e ArraysMemória Dinâmica com 'new'Liberando Memória com 'delete'Recapitulação - Prática com Ponteiros2Vetores (Arrays Dinâmicos)
Introdução ao std::vectorCriando um VetorAdicionando ElementosAcessando ElementosTamanho do VetorIterando com um Loop ForLoop For Baseado em IntervaloRemovendo ElementosRecapitulação - Operações com Vetores3Projeto: Ferramenta de Lista de Tarefas
Visão Geral do ProjetoAdicionando uma Tarefa