Menu
Coddy logo textTech

O Operador de Desreferência (*)

Parte da seção Logic & Flow do Journey de C da Coddy — lição 4 de 63.

Agora que você sabe como armazenar endereços em ponteiros, você precisa aprender como acessar o valor real armazenado naquele endereço de memória. O operador de desreferência (*) permite que você "siga" o ponteiro para obter o valor para o qual ele aponta.

Quando você coloca o operador * na frente de uma variável de ponteiro, ele acessa o valor armazenado no endereço de memória que o ponteiro está guardando. Pense nisso como dizer "dê-me o que está dentro da sala neste endereço".

int age = 25;
int *ptr = &age;
printf("%d", *ptr);    // Imprime 25 - o valor de age

É importante entender que o asterisco (*) tem dois significados diferentes em C. Ao declarar um ponteiro como int *ptr;, o asterisco indica que ptr é um ponteiro. Quando usado com um ponteiro existente como *ptr, ele desreferencia o ponteiro para acessar o valor para o qual ele aponta.

O operador de desreferência é essencial porque completa o ciclo do ponteiro: você pode armazenar um endereço em um ponteiro com &, e então recuperar o valor naquele endereço com *. Isso permite que você acesse e modifique variáveis indiretamente através de seus endereços de memória.

challenge icon

Desafio

Fácil

Escreva um programa em C que demonstre o fluxo de trabalho completo de ponteiros: declaração, atribuição de endereço e desreferenciação. Seu programa deve:

  1. Declarar uma variável inteira chamada value e inicializá-la com o valor 75
  2. Declarar uma variável float chamada price e inicializá-la com o valor 19.99
  3. Declarar um ponteiro para um inteiro chamado value_ptr
  4. Declarar um ponteiro para um float chamado price_ptr
  5. Usar o operador de endereço para atribuir o endereço de value a value_ptr
  6. Usar o operador de endereço para atribuir o endereço de price a price_ptr
  7. Usar o operador de desreferenciação para imprimir o valor de value através de value_ptr
  8. Usar o operador de desreferenciação para imprimir o valor de price através de price_ptr com exatamente 2 casas decimais

Sua saída deve exibir os valores desreferenciados no seguinte formato:

Value through pointer: 75
Price through pointer: 19.99

O desafio testa sua compreensão de como o operador de desreferenciação recupera o valor da variável original seguindo o endereço armazenado no ponteiro.

Folha de consulta

O operador de desreferência (*) permite que você acesse o valor armazenado no endereço de memória que um ponteiro está guardando.

int age = 25;
int *ptr = &age;
printf("%d", *ptr);    // Imprime 25 - o valor de age

O asterisco (*) tem dois significados diferentes em C:

  • Em declarações como int *ptr; - indica que ptr é um ponteiro
  • Com ponteiros existentes como *ptr - desreferencia o ponteiro para acessar o valor para o qual ele aponta

O operador de desreferência completa o ciclo do ponteiro: armazene um endereço com &, depois recupere o valor nesse endereço com *.

Experimente você mesmo

#include <stdio.h>

int main() {
    // TODO: Escreva seu código aqui
    // 1. Declare e inicialize as variáveis
    // 2. Declare os ponteiros
    // 3. Atribua endereços aos ponteiros
    // 4. Imprima os valores desreferenciados
    
    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 Logic & Flow